summaryrefslogtreecommitdiffstats
path: root/libmsi/msipriv.h
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2012-12-11 11:35:57 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2012-12-11 11:38:05 +0100
commitcb4d4b7214170989fbce773bcf2dc0ca0581f4af (patch)
tree43cad405aa6ae7bb8064f1be47cad94dc255ba5c /libmsi/msipriv.h
parent4a33d8ff9f1e0593bd49922cd46aa3e6a7aa1273 (diff)
parentae4c81e4fca5bb5816b5cbabb17a7dcc22f58a3b (diff)
downloadmsitools-cb4d4b7214170989fbce773bcf2dc0ca0581f4af.tar.gz
msitools-cb4d4b7214170989fbce773bcf2dc0ca0581f4af.tar.xz
msitools-cb4d4b7214170989fbce773bcf2dc0ca0581f4af.zip
Merge branch 'pre-gsf'
Conflicts: libmsi/Makefile.am libmsi/handle.c libmsi/libmsi-database.c libmsi/libmsi-query.c libmsi/libmsi-record.c libmsi/libmsi-summary-info.c libmsi/msipriv.h
Diffstat (limited to 'libmsi/msipriv.h')
-rw-r--r--libmsi/msipriv.h62
1 files changed, 25 insertions, 37 deletions
diff --git a/libmsi/msipriv.h b/libmsi/msipriv.h
index e660424..a298ae3 100644
--- a/libmsi/msipriv.h
+++ b/libmsi/msipriv.h
@@ -70,24 +70,13 @@ typedef struct _LibmsiTable LibmsiTable;
struct string_table;
typedef struct string_table string_table;
-struct _LibmsiObject;
-typedef struct _LibmsiObject LibmsiObject;
-
-typedef void (*msihandledestructor)( LibmsiObject * );
-
-struct _LibmsiObject
-{
- unsigned magic;
- int refcount;
- msihandledestructor destructor;
-};
-
#define MSI_INITIAL_MEDIA_TRANSFORM_OFFSET 10000
#define MSI_INITIAL_MEDIA_TRANSFORM_DISKID 30000
-typedef struct _LibmsiDatabase
+struct _LibmsiDatabase
{
- LibmsiObject hdr;
+ GObject parent;
+
GsfInfile *infile;
GsfOutfile *outfile;
string_table *strings;
@@ -96,25 +85,27 @@ typedef struct _LibmsiDatabase
char *outpath;
bool rename_outpath;
bool patch;
- const char *mode;
+ const char *mode; /* FIXME: turn this into an enum */
unsigned media_transform_offset;
unsigned media_transform_disk_id;
struct list tables;
struct list transforms;
struct list streams;
struct list storages;
-} LibmsiDatabase;
+};
typedef struct _LibmsiView LibmsiView;
-typedef struct _LibmsiQuery
+struct _LibmsiQuery
{
- LibmsiObject hdr;
+ GObject parent;
+
LibmsiView *view;
unsigned row;
- LibmsiDatabase *db;
+ LibmsiDatabase *database;
+ gchar *query;
struct list mem;
-} LibmsiQuery;
+};
/* maybe we can use a Variant instead of doing it ourselves? */
typedef struct _LibmsiField
@@ -128,12 +119,13 @@ typedef struct _LibmsiField
} u;
} LibmsiField;
-typedef struct _LibmsiRecord
+struct _LibmsiRecord
{
- LibmsiObject hdr;
+ GObject parent;
+
unsigned count; /* as passed to libmsi_record_new */
- LibmsiField fields[1]; /* nb. array size is count+1 */
-} LibmsiRecord;
+ LibmsiField *fields; /* nb. array size is count+1 */
+};
typedef struct _column_info
{
@@ -295,17 +287,18 @@ typedef struct _LibmsiOLEVariant
};
} LibmsiOLEVariant;
-typedef struct _LibmsiSummaryInfo
+struct _LibmsiSummaryInfo
{
- LibmsiObject hdr;
+ GObject parent;
+
LibmsiDatabase *database;
unsigned update_count;
LibmsiOLEVariant property[MSI_MAX_PROPS];
-} LibmsiSummaryInfo;
+};
-extern const guint8 clsid_msi_transform[16];
-extern const guint8 clsid_msi_database[16];
-extern const guint8 clsid_msi_patch[16];
+extern const char clsid_msi_transform[16];
+extern const char clsid_msi_database[16];
+extern const char clsid_msi_patch[16];
/* handle unicode/ascii output in the Msi* API functions */
typedef struct {
@@ -326,11 +319,6 @@ typedef struct {
unsigned msi_strcpy_to_awstring( const char *str, awstring *awbuf, unsigned *sz );
-/* handle functions */
-extern void *alloc_msiobject(unsigned size, msihandledestructor destroy );
-extern void msiobj_addref(LibmsiObject *);
-extern int msiobj_release(LibmsiObject *);
-
extern void free_cached_tables( LibmsiDatabase *db );
extern unsigned _libmsi_database_commit_tables( LibmsiDatabase *db, unsigned bytes_per_strref );
@@ -372,7 +360,7 @@ extern void append_storage_to_db( LibmsiDatabase *db, GsfInfile *stg );
extern unsigned _libmsi_database_commit_storages( LibmsiDatabase *db );
/* record internals */
-extern void _libmsi_record_destroy( LibmsiObject * );
+extern void _libmsi_record_destroy( LibmsiRecord * );
extern unsigned _libmsi_record_set_gsf_input( LibmsiRecord *, unsigned, GsfInput *);
extern unsigned _libmsi_record_get_gsf_input( const LibmsiRecord *, unsigned, GsfInput **);
extern const char *_libmsi_record_get_string_raw( const LibmsiRecord *, unsigned );
@@ -391,7 +379,7 @@ extern char *encode_streamname(bool bTable, const char *in);
extern void decode_streamname(const char *in, char *out);
/* database internals */
-extern LibmsiResult _libmsi_database_start_transaction(LibmsiDatabase *db, const char *szPersist);
+extern LibmsiResult _libmsi_database_start_transaction(LibmsiDatabase *db);
extern LibmsiResult _libmsi_database_open(LibmsiDatabase *db);
extern LibmsiResult _libmsi_database_close(LibmsiDatabase *db, bool committed);
unsigned msi_create_stream( LibmsiDatabase *db, const char *stname, GsfInput *stm );