summaryrefslogtreecommitdiffstats
path: root/libmsi/libmsi-query.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-12-12 01:33:12 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2013-01-09 13:56:06 +0100
commit6e9a50e37e51564c9d5f84e156c33af7e93cc2b8 (patch)
tree0ded25223d11088269a86d7100d83b74458e2e1a /libmsi/libmsi-query.c
parente14bf3cdcf43bce1592c950472b9f87b77fb2f39 (diff)
downloadmsitools-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.c24
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 )