Index: trunk/include/regfio.h
===================================================================
--- trunk/include/regfio.h	(revision 41)
+++ trunk/include/regfio.h	(revision 53)
@@ -102,17 +102,16 @@
 struct regf_hbin;
 typedef struct regf_hbin {
-	struct regf_hbin *prev, *next;
-	uint32 file_off;		/* my offset in the registry file */
-	uint32 free_off;		/* offset to free space within the hbin record */
-	uint32 free_size;		/* amount of data left in the block */
-	int ref_count;			/* how many active records are pointing to this block (not used currently) */
+  struct regf_hbin* prev;
+  struct regf_hbin* next;
+  uint32 file_off;       /* my offset in the registry file */
+  uint32 free_off;       /* offset to free space within the hbin record */
+  uint32 free_size;      /* amount of data left in the block */
+  int    ref_count;      /* how many active records are pointing to this block (not used currently) */
 	
-	char   header[HBIN_HDR_SIZE];	/* "hbin" */
-	uint32 first_hbin_off;		/* offset from first hbin block */
-	uint32 block_size;		/* block size of this blockually a multiple of 4096Kb) */
-
-	prs_struct ps;			/* data */
-
-	bool dirty;			/* has this hbin block been modified? */
+  uint8  header[HBIN_HDR_SIZE]; /* "hbin" */
+  uint32 first_hbin_off; /* offset from first hbin block */
+  uint32 block_size;     /* block size of this blockually a multiple of 4096Kb) */
+  prs_struct ps;	       /* data */
+  bool dirty;            /* has this hbin block been modified? */
 } REGF_HBIN;
 
@@ -120,16 +119,16 @@
 
 typedef struct {
-	uint32 nk_off;
-	uint8 keycheck[sizeof(uint32)];
+  uint32 nk_off;
+  uint8 keycheck[sizeof(uint32)];
 } REGF_HASH_REC;
 
 typedef struct {
-	REGF_HBIN *hbin;	/* pointer to HBIN record (in memory) containing this nk record */
-	uint32 hbin_off;	/* offset from beginning of this hbin block */
-	uint32 rec_size;	/* ((start_offset - end_offset) & 0xfffffff8) */
-
-	char header[REC_HDR_SIZE];
-	uint16 num_keys;
-	REGF_HASH_REC *hashes;
+  REGF_HBIN *hbin;	/* pointer to HBIN record (in memory) containing this nk record */
+  uint32 hbin_off;	/* offset from beginning of this hbin block */
+  uint32 rec_size;	/* ((start_offset - end_offset) & 0xfffffff8) */
+  
+  uint8 header[REC_HDR_SIZE];
+  uint16 num_keys;
+  REGF_HASH_REC *hashes;
 } REGF_LF_REC;
 
@@ -137,16 +136,16 @@
 
 typedef struct {
-	REGF_HBIN *hbin;	/* pointer to HBIN record (in memory) containing this nk record */
-	uint32 hbin_off;	/* offset from beginning of this hbin block */
-	uint32 rec_size;	/* ((start_offset - end_offset) & 0xfffffff8) */
-	uint32 rec_off;		/* offset stored in the value list */
-	
-	char header[REC_HDR_SIZE];
-	char *valuename;
-	uint32 data_size;
-	uint32 data_off;
-	uint8  *data;
-	uint32 type;
-	uint16 flag;
+  REGF_HBIN *hbin;	/* pointer to HBIN record (in memory) containing this nk record */
+  uint32 hbin_off;	/* offset from beginning of this hbin block */
+  uint32 rec_size;	/* ((start_offset - end_offset) & 0xfffffff8) */
+  uint32 rec_off;		/* offset stored in the value list */
+  
+  uint8  header[REC_HDR_SIZE];
+  char*  valuename;
+  uint32 data_size;
+  uint32 data_off;
+  uint8* data;
+  uint32 type;
+  uint16 flag;
 } REGF_VK_REC;
 
@@ -156,18 +155,18 @@
 
 typedef struct _regf_sk_rec {
-	struct _regf_sk_rec *next, *prev;
-	REGF_HBIN *hbin;	/* pointer to HBIN record (in memory) containing this nk record */
-	uint32 hbin_off;	/* offset from beginning of this hbin block */
-	uint32 rec_size;	/* ((start_offset - end_offset) & 0xfffffff8) */
-
-	uint32 sk_off;		/* offset parsed from NK record used as a key
+  struct _regf_sk_rec *next, *prev;
+  REGF_HBIN *hbin;	/* pointer to HBIN record (in memory) containing this nk record */
+  uint32 hbin_off;	/* offset from beginning of this hbin block */
+  uint32 rec_size;	/* ((start_offset - end_offset) & 0xfffffff8) */
+  
+  uint32 sk_off;		/* offset parsed from NK record used as a key
 				   to lookup reference to this SK record */
-
-	char header[REC_HDR_SIZE];
-	uint32 prev_sk_off;
-	uint32 next_sk_off;
-	uint32 ref_count;
-	uint32 size;
-	SEC_DESC *sec_desc;
+  
+  uint8  header[REC_HDR_SIZE];
+  uint32 prev_sk_off;
+  uint32 next_sk_off;
+  uint32 ref_count;
+  uint32 size;
+  SEC_DESC *sec_desc;
 } REGF_SK_REC;
 
@@ -175,43 +174,43 @@
 
 typedef struct {
-	REGF_HBIN *hbin;	/* pointer to HBIN record (in memory) containing this nk record */
-	uint32 hbin_off;	/* offset from beginning of this hbin block */
-	uint32 subkey_index;	/* index to next subkey record to return */
-	uint32 rec_size;	/* ((start_offset - end_offset) & 0xfffffff8) */
-	
-	/* header information */
-	
-	char header[REC_HDR_SIZE];
-	uint16 key_type;
-	NTTIME mtime;
-	uint32 parent_off;	/* back pointer in registry hive */
-	uint32 classname_off;	
-	char *classname;
-	char *keyname;
-
-	/* max lengths */
-
-	uint32 max_bytes_subkeyname;		/* max subkey name * 2 */
-	uint32 max_bytes_subkeyclassname;	/* max subkey classname length (as if) */
-	uint32 max_bytes_valuename;		/* max valuename * 2 */
-	uint32 max_bytes_value;			/* max value data size */
-
-	/* unknowns */
-
-	uint32 unk_index;			/* nigel says run time index ? */
-	
-	/* children */
-	
-	uint32 num_subkeys;
-	uint32 subkeys_off;	/* hash records that point to NK records */	
-	uint32 num_values;
-	uint32 values_off;	/* value lists which point to VK records */
-	uint32 sk_off;		/* offset to SK record */
-	
-	/* link in the other records here */
-	
-	REGF_LF_REC subkeys;
-	REGF_VK_REC *values;
-	REGF_SK_REC *sec_desc;
+  REGF_HBIN *hbin;	/* pointer to HBIN record (in memory) containing this nk record */
+  uint32 hbin_off;	/* offset from beginning of this hbin block */
+  uint32 subkey_index;	/* index to next subkey record to return */
+  uint32 rec_size;	/* ((start_offset - end_offset) & 0xfffffff8) */
+  
+  /* header information */
+  
+  uint8  header[REC_HDR_SIZE];
+  uint16 key_type;
+  NTTIME mtime;
+  uint32 parent_off;	/* back pointer in registry hive */
+  uint32 classname_off;	
+  char *classname;
+  char *keyname;
+  
+  /* max lengths */
+  
+  uint32 max_bytes_subkeyname;		/* max subkey name * 2 */
+  uint32 max_bytes_subkeyclassname;	/* max subkey classname length (as if) */
+  uint32 max_bytes_valuename;		/* max valuename * 2 */
+  uint32 max_bytes_value;			/* max value data size */
+  
+  /* unknowns */
+  
+  uint32 unk_index;			/* nigel says run time index ? */
+  
+  /* children */
+  
+  uint32 num_subkeys;
+  uint32 subkeys_off;	/* hash records that point to NK records */	
+  uint32 num_values;
+  uint32 values_off;	/* value lists which point to VK records */
+  uint32 sk_off;		/* offset to SK record */
+  
+  /* link in the other records here */
+  
+  REGF_LF_REC subkeys;
+  REGF_VK_REC *values;
+  REGF_SK_REC *sec_desc;
 	
 } REGF_NK_REC;
@@ -220,31 +219,31 @@
  
 typedef struct {
-	/* run time information */
-
-	int fd;				/* file descriptor */
-	int open_flags;			/* flags passed to the open() call */
-	void *mem_ctx;		/* memory context for run-time file access information */
-	REGF_HBIN *block_list;		/* list of open hbin blocks */
-
-	/* file format information */
-
-	char   header[REGF_HDR_SIZE];	/* "regf" */
-	uint32 data_offset;		/* offset to record in the first (or any?) hbin block */
-	uint32 last_block;		/* offset to last hbin block in file */
-	uint32 checksum;		/* XOR of bytes 0x0000 - 0x01FB */
-	NTTIME mtime;
-	
-	REGF_SK_REC *sec_desc_list;	/* list of security descriptors referenced by NK records */
-
-	/* unknowns used to simply writing */
-	
-	uint32 unknown1;
-	uint32 unknown2;
-	uint32 unknown3;
-	uint32 unknown4;
-	uint32 unknown5;
-	uint32 unknown6;
-	
+  /* run time information */
+  
+  int fd;				/* file descriptor */
+  int open_flags;			/* flags passed to the open() call */
+  void *mem_ctx;		/* memory context for run-time file access information */
+  REGF_HBIN *block_list;		/* list of open hbin blocks */
+  
+  /* file format information */
+  
+  uint8  header[REGF_HDR_SIZE];	/* "regf" */
+  uint32 data_offset;		/* offset to record in the first (or any?) hbin block */
+  uint32 last_block;		/* offset to last hbin block in file */
+  uint32 checksum;		/* XOR of bytes 0x0000 - 0x01FB */
+  NTTIME mtime;
+  
+  REGF_SK_REC *sec_desc_list;	/* list of security descriptors referenced by NK records */
+  
+  /* unknowns used to simply writing */
+  
+  uint32 unknown1;
+  uint32 unknown2;
+  uint32 unknown3;
+  uint32 unknown4;
+  uint32 unknown5;
+  uint32 unknown6;
 } REGF_FILE;
+
 
 /* Function Declarations */
@@ -253,4 +252,9 @@
 int           regfio_type_str2val(const char* str);
 
+char*         regfio_get_sacl(SEC_DESC *sec_desc);
+char*         regfio_get_dacl(SEC_DESC *sec_desc);
+char*         regfio_get_owner(SEC_DESC *sec_desc);
+char*         regfio_get_group(SEC_DESC *sec_desc);
+
 REGF_FILE*    regfio_open( const char *filename );
 int           regfio_close( REGF_FILE *r );
