diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2012-12-12 01:33:12 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2013-01-09 13:56:06 +0100 |
commit | 6e9a50e37e51564c9d5f84e156c33af7e93cc2b8 (patch) | |
tree | 0ded25223d11088269a86d7100d83b74458e2e1a /libmsi/libmsi-query.c | |
parent | e14bf3cdcf43bce1592c950472b9f87b77fb2f39 (diff) | |
download | msitools-6e9a50e37e51564c9d5f84e156c33af7e93cc2b8.tar.gz msitools-6e9a50e37e51564c9d5f84e156c33af7e93cc2b8.tar.xz msitools-6e9a50e37e51564c9d5f84e156c33af7e93cc2b8.zip |
query: return TRUE on success, add GError
Diffstat (limited to 'libmsi/libmsi-query.c')
-rw-r--r-- | libmsi/libmsi-query.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/libmsi/libmsi-query.c b/libmsi/libmsi-query.c index 88e598f..ecb2ce6 100644 --- a/libmsi/libmsi-query.c +++ b/libmsi/libmsi-query.c @@ -229,6 +229,7 @@ unsigned _libmsi_query_iterate_records( LibmsiQuery *view, unsigned *count, { LibmsiRecord *rec = NULL; unsigned r, n = 0, max = 0; + GError *error = NULL; // FIXME: move error handling to caller r = _libmsi_query_execute( view, NULL ); if( r != LIBMSI_RESULT_SUCCESS ) @@ -250,7 +251,11 @@ unsigned _libmsi_query_iterate_records( LibmsiQuery *view, unsigned *count, break; } - libmsi_query_close( view ); + libmsi_query_close( view, &error ); + if (error) { + g_critical ("%s", error->message); + g_clear_error (&error); + } if( count ) *count = n; @@ -269,6 +274,7 @@ LibmsiRecord *_libmsi_query_get_record( LibmsiDatabase *db, const char *fmt, ... unsigned r; int size = 100, res; char *query; + GError *error = NULL; // FIXME: move error to caller /* construct the string */ for (;;) @@ -291,7 +297,11 @@ LibmsiRecord *_libmsi_query_get_record( LibmsiDatabase *db, const char *fmt, ... { _libmsi_query_execute( view, NULL ); _libmsi_query_fetch( view, &rec ); - libmsi_query_close( view ); + libmsi_query_close( view, &error ); + if (error) { + g_critical ("%s", error->message); + g_clear_error (&error); + } g_object_unref(view); } return rec; @@ -411,7 +421,8 @@ LibmsiResult libmsi_query_fetch(LibmsiQuery *query, LibmsiRecord **record) return ret; } -LibmsiResult libmsi_query_close(LibmsiQuery *query) +gboolean +libmsi_query_close (LibmsiQuery *query, GError **error) { LibmsiView *view; unsigned ret; @@ -430,7 +441,12 @@ LibmsiResult libmsi_query_close(LibmsiQuery *query) ret = view->ops->close( view ); g_object_unref(query); - return ret; + + /* FIXME: raise error when it happens */ + if (ret != LIBMSI_RESULT_SUCCESS) + g_set_error_literal (error, LIBMSI_RESULT_ERROR, ret, G_STRFUNC); + + return ret == LIBMSI_RESULT_SUCCESS; } LibmsiResult _libmsi_query_execute(LibmsiQuery *query, LibmsiRecord *rec ) |