diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2012-12-17 12:11:39 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2013-01-09 13:56:07 +0100 |
commit | 166331435f6007ea3363efeeaacec6fe5e972214 (patch) | |
tree | dd9cd0647071b53dc4e434d85972724e459cc59f | |
parent | 51796fda08d36dfc38848c429d8cabd48e3484a9 (diff) | |
download | msitools-166331435f6007ea3363efeeaacec6fe5e972214.tar.gz msitools-166331435f6007ea3363efeeaacec6fe5e972214.tar.xz msitools-166331435f6007ea3363efeeaacec6fe5e972214.zip |
database: Make get_primary_keys() GObject-like
-rw-r--r-- | include/libmsi-database.h | 6 | ||||
-rw-r--r-- | libmsi/libmsi-database.c | 16 | ||||
-rw-r--r-- | tests/testrecord.c | 10 | ||||
-rw-r--r-- | tools/msiinfo.c | 4 |
4 files changed, 22 insertions, 14 deletions
diff --git a/include/libmsi-database.h b/include/libmsi-database.h index a34be98..37b91ae 100644 --- a/include/libmsi-database.h +++ b/include/libmsi-database.h @@ -46,8 +46,10 @@ LibmsiDatabase * libmsi_database_new (const gchar *path, const char *persist, GError **error); -LibmsiDBState libmsi_database_get_state (LibmsiDatabase *); -LibmsiResult libmsi_database_get_primary_keys (LibmsiDatabase *,const char *,LibmsiRecord **); +LibmsiDBState libmsi_database_get_state (LibmsiDatabase *db); +LibmsiRecord * libmsi_database_get_primary_keys (LibmsiDatabase *db, + const char *table, + GError **error); LibmsiResult libmsi_database_apply_transform (LibmsiDatabase *,const char *); LibmsiResult libmsi_database_export (LibmsiDatabase *, const char *, int fd); LibmsiResult libmsi_database_import (LibmsiDatabase *, const char *, const char *); diff --git a/libmsi/libmsi-database.c b/libmsi/libmsi-database.c index adecbaf..271e1f8 100644 --- a/libmsi/libmsi-database.c +++ b/libmsi/libmsi-database.c @@ -2396,21 +2396,27 @@ unsigned _libmsi_database_get_primary_keys( LibmsiDatabase *db, return r; } -LibmsiResult libmsi_database_get_primary_keys(LibmsiDatabase *db, - const char *table, LibmsiRecord **prec) +LibmsiRecord * +libmsi_database_get_primary_keys (LibmsiDatabase *db, + const char *table, + GError **error) { + LibmsiRecord *rec; unsigned r; TRACE("%d %s %p\n", db, debugstr_a(table), prec); if( !db ) - return LIBMSI_RESULT_INVALID_HANDLE; + return NULL; g_object_ref(db); - r = _libmsi_database_get_primary_keys( db, table, prec ); + r = _libmsi_database_get_primary_keys(db, table, &rec); g_object_unref(db); - return r; + if (r != LIBMSI_RESULT_SUCCESS) + g_set_error_literal (error, LIBMSI_RESULT_ERROR, r, G_STRFUNC); + + return rec; } LibmsiCondition libmsi_database_is_table_persistent( diff --git a/tests/testrecord.c b/tests/testrecord.c index 02b6228..ef9d26d 100644 --- a/tests/testrecord.c +++ b/tests/testrecord.c @@ -315,6 +315,7 @@ static void test_MsiRecordGetInteger (void) static void test_fieldzero (void) { + GError *error = NULL; LibmsiDatabase *hdb; LibmsiQuery *hview; LibmsiRecord *rec; @@ -390,9 +391,8 @@ static void test_fieldzero (void) ok (r, "libmsi_query_close failed\n"); g_object_unref (hview); - rec = NULL; - r = libmsi_database_get_primary_keys (hdb, "drone", &rec); - ok (r == LIBMSI_RESULT_SUCCESS, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r); + rec = libmsi_database_get_primary_keys (hdb, "drone", &error); + ok (rec, "Expected LIBMSI_RESULT_SUCCESS, got %d\n", r); r = libmsi_record_get_int (rec, 0); ok (r == LIBMSI_NULL_INT, "Expected LIBMSI_NULL_INT, got %d\n", r); @@ -404,8 +404,8 @@ static void test_fieldzero (void) g_object_unref (rec); - r = libmsi_database_get_primary_keys (hdb, "nosuchtable", &rec); - ok (r == LIBMSI_RESULT_INVALID_TABLE, "Expected LIBMSI_RESULT_INVALID_TABLE, got %d\n", r); + rec = libmsi_database_get_primary_keys (hdb, "nosuchtable", &error); + g_error_matches(error, LIBMSI_RESULT_ERROR, LIBMSI_RESULT_INVALID_TABLE); query = "SELECT * FROM `drone` WHERE `id` = 1"; hview = libmsi_query_new (hdb, query, NULL); diff --git a/tools/msiinfo.c b/tools/msiinfo.c index 645c456..ea41713 100644 --- a/tools/msiinfo.c +++ b/tools/msiinfo.c @@ -621,8 +621,8 @@ static unsigned export_sql( LibmsiDatabase *db, const char *table, GError **erro } /* write out row 3, the table name + keys */ - r = libmsi_database_get_primary_keys( db, table, &keys ); - if (r) { + keys = libmsi_database_get_primary_keys(db, table, error); + if (!keys) { goto done; } |