Index: trunk/python2/regfi/class.c
===================================================================
--- trunk/python2/regfi/class.c	(revision 196)
+++ trunk/python2/regfi/class.c	(revision 198)
@@ -33,8 +33,8 @@
 // allocated therefore:
 
-inline void Object_init(Object this) {
+void Object_init(Object this) {
   this->__class__ = &__Object;
   this->__super__ = NULL;
-};
+}
 
 struct Object_t __Object = {
@@ -56,8 +56,8 @@
       return 0;
   };
-};
+}
 
 void unimplemented(Object self) {
   printf("%s contains unimplemented functions.. is it an abstract class?\n", NAMEOF(self));
   abort();
-};
+}
Index: trunk/python2/regfi/error.c
===================================================================
--- trunk/python2/regfi/error.c	(revision 196)
+++ trunk/python2/regfi/error.c	(revision 198)
@@ -22,5 +22,5 @@
 void error_dest(void *slot) {
   if(slot) talloc_free(slot);
-};
+}
 
 void *raise_errors(enum _error_type t, char *reason, ...) {
@@ -42,5 +42,5 @@
 
   return NULL;
-};
+}
 
 static int error_subsystem_initialised=0;
@@ -70,5 +70,5 @@
 
   return type;
-};
+}
 
 /** Initialise the error subsystem */
@@ -82,3 +82,3 @@
     abort();
   };
-};
+}
Index: trunk/python2/regfi/pyregfi.h
===================================================================
--- trunk/python2/regfi/pyregfi.h	(revision 196)
+++ trunk/python2/regfi/pyregfi.h	(revision 198)
@@ -19,14 +19,14 @@
 struct ValueIterator_t;
 
-BIND_STRUCT(REGFI_NK_REC);
-BIND_STRUCT(REGFI_VK_REC);
-BIND_STRUCT(REGFI_DATA);
+BIND_STRUCT(REGFI_NK_REC)
+BIND_STRUCT(REGFI_VK_REC)
+BIND_STRUCT(REGFI_DATA)
 
 /** This is the base class for data objects */
 CLASS(RawData, Object)
-    REGFI_DATA *data;
-    REGFI_VK_REC *rec;
+    const REGFI_DATA *data;
+    const REGFI_VK_REC *rec;
 
-    RawData METHOD(RawData, Con, REGFI_DATA *data,REGFI_VK_REC *record);
+    RawData METHOD(RawData, Con, REGFI_DATA *data, REGFI_VK_REC *record);
 
     /** Return the raw buffer as a string. By default we only return
Index: trunk/python2/regfi/regfi.c
===================================================================
--- trunk/python2/regfi/regfi.c	(revision 196)
+++ trunk/python2/regfi/regfi.c	(revision 198)
@@ -18,5 +18,5 @@
 
   return 0;
-};
+}
 
 static RegistryFile RegistryFile_Con(RegistryFile self, char *filename) {
@@ -25,12 +25,14 @@
     RaiseError(EIOError, "Unable to open %s", filename);
     goto error;
-  };
+  }
 
   self->reg = regfi_alloc(self->fd);
 
   if(!self->reg) {
-    RaiseError(ERuntimeError, "REGFI Error: %s", regfi_log_get_str());
-    goto error;
-  };
+    /*RaiseError(ERuntimeError, "REGFI Error: %s", regfi_log_get_str());*/
+    /*char* e = regfi_log_get_str();*/
+    /*fprintf(stderr, "%p\n", e);*/
+    goto error;
+  }
 
   talloc_set_destructor((void *)self, RegistryFile_dest);
@@ -40,9 +42,9 @@
   talloc_free(self);
   return NULL;
-};
+}
 
 static KeyIterator RegistryFile_get_key(RegistryFile self, char **path, REGFI_ENCODING encoding) {
   return CONSTRUCT(KeyIterator, KeyIterator, Con, NULL, self, path, encoding);
-};
+}
 
 
@@ -58,8 +60,8 @@
   if(this->next_item) {
     regfi_free_record(this->next_item);
-  };
-
-  return 0;
-};
+  }
+
+  return 0;
+}
 
 static KeyIterator KeyIterator_Con(KeyIterator self, RegistryFile file, char **path,
@@ -70,5 +72,5 @@
     RaiseError(ERuntimeError, "Error: %s", regfi_log_get_str());
     goto error;
-  };
+  }
 
   talloc_set_destructor((void*)self, KeyIterator_dest);
@@ -79,6 +81,6 @@
       RaiseError(ERuntimeError, "Unable to walk down key path");
       goto error;
-    };
-  };
+    }
+  }
 
   // Get the first key in the list
@@ -88,5 +90,5 @@
  error:
   return NULL;
-};
+}
 
 static void KeyIterator__iter__(KeyIterator self) {
@@ -96,8 +98,8 @@
 
   self->next_item = regfi_iterator_first_subkey(self->iter);
-};
-
-static REGFI_NK_REC *KeyIterator_next(KeyIterator self) {
-  const REGFI_NK_REC * result;
+}
+
+static const REGFI_NK_REC* KeyIterator_next(KeyIterator self) {
+  const REGFI_NK_REC* result;
 
   if(!self->next_item) return NULL;
@@ -108,9 +110,9 @@
 
   return result;
-};
+}
 
 static ValueIterator KeyIterator_list_values(KeyIterator self) {
   return CONSTRUCT(ValueIterator, ValueIterator, Con, NULL, self);
-};
+}
 
 VIRTUAL(KeyIterator, Object) {
@@ -127,5 +129,5 @@
 
   return 0;
-};
+}
 
 static ValueIterator ValueIterator_Con(ValueIterator self, KeyIterator key) {
@@ -139,5 +141,5 @@
 
   return self;
-};
+}
 
 static void ValueIterator__iter__(ValueIterator self) {
@@ -145,10 +147,10 @@
 
   self->next_item = regfi_iterator_first_value(self->iter);
-};
+}
 
 static RawData ValueIterator_iternext(ValueIterator self) {
   RawData result;
-  REGFI_DATA *data;
-  REGFI_VK_REC *rec = (REGFI_VK_REC *)self->next_item;
+  const REGFI_DATA *data;
+  const REGFI_VK_REC *rec = self->next_item;
 
   if(!rec) return NULL;
@@ -158,5 +160,5 @@
     RaiseError(ERuntimeError, "Unable to fetch data: %s", regfi_log_get_str());
     goto error;
-  };
+  }
 
   switch(self->next_item->type) {
@@ -174,5 +176,5 @@
     result = (RawData)CONSTRUCT(RawData, RawData, Con, NULL, data, rec);
     break;
-  };
+  }
 
 
@@ -188,5 +190,5 @@
   talloc_free(self);
   return NULL;
-};
+}
 
 VIRTUAL(ValueIterator, Object) {
@@ -208,5 +210,5 @@
 
   return 0;
-};
+}
 
 static RawData RawData_Con(RawData self, REGFI_DATA *data, REGFI_VK_REC *record) {
@@ -217,5 +219,5 @@
 
   return self;
-};
+}
 
 static int RawData_get_value(RawData self, char *buff, int len) {
@@ -225,5 +227,5 @@
 
   return available_to_read;
-};
+}
 
 VIRTUAL(RawData, Object) {
@@ -232,9 +234,9 @@
 } END_VIRTUAL
 
-static char *DataString_get_value(DataString self) {
+static char* DataString_get_value(DataString self) {
   RawData this = (RawData)self;
 
-  return this->data->interpreted.string;
-};
+  return (char*)this->data->interpreted.string;
+}
 
 VIRTUAL(DataString, RawData) {
@@ -246,5 +248,5 @@
 
   return this->data->interpreted.dword;
-};
+}
 
 VIRTUAL(DWORDData, RawData) {
@@ -255,3 +257,3 @@
   INIT_CLASS(RegistryFile);
 
-};
+}
