summaryrefslogtreecommitdiffstats
path: root/tools/msibuild.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-12-12 01:32:03 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2013-01-09 13:56:06 +0100
commite14bf3cdcf43bce1592c950472b9f87b77fb2f39 (patch)
tree46df0344f038fde1a789ea9c3239598682cca983 /tools/msibuild.c
parent6767f692eddc4a2c6c1cb211c1620c4d4196c9f2 (diff)
downloadmsitools-e14bf3cdcf43bce1592c950472b9f87b77fb2f39.tar.gz
msitools-e14bf3cdcf43bce1592c950472b9f87b77fb2f39.tar.xz
msitools-e14bf3cdcf43bce1592c950472b9f87b77fb2f39.zip
msibuild: add main() catch-all GError handler
Diffstat (limited to 'tools/msibuild.c')
-rw-r--r--tools/msibuild.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/tools/msibuild.c b/tools/msibuild.c
index d0bafb2..d437292 100644
--- a/tools/msibuild.c
+++ b/tools/msibuild.c
@@ -174,7 +174,7 @@ static gboolean add_summary_info(const char *name, const char *author,
return TRUE;
}
-static int add_stream(const char *stream, const char *file)
+static int add_stream(const char *stream, const char *file, GError **error)
{
LibmsiResult r;
LibmsiRecord *rec;
@@ -202,6 +202,7 @@ static int add_stream(const char *stream, const char *file)
static int do_query(const char *sql, void *opaque)
{
+ GError **error = opaque;
LibmsiResult r;
LibmsiQuery *query;
@@ -236,6 +237,7 @@ static void show_usage(void)
int main(int argc, char *argv[])
{
+ GError *error = NULL;
int r;
int n;
@@ -290,9 +292,9 @@ int main(int argc, char *argv[])
break;
case 'q':
do {
- ret = sql_get_statement(argv[1], do_query, NULL);
+ ret = sql_get_statement(argv[1], do_query, &error);
if (ret == 0) {
- ret = sql_get_statement("", do_query, NULL);
+ ret = sql_get_statement("", do_query, &error);
}
if (ret) {
break;
@@ -303,7 +305,7 @@ int main(int argc, char *argv[])
break;
case 'a':
if (argc < 3) break;
- ret = add_stream(argv[1], argv[2]);
+ ret = add_stream(argv[1], argv[2], &error);
argc -= 3, argv += 3;
break;
default:
@@ -332,5 +334,12 @@ int main(int argc, char *argv[])
end:
g_object_unref(si);
g_object_unref(db);
+
+ if (error != NULL) {
+ g_printerr("error: %s\n", error->message);
+ g_clear_error(&error);
+ exit(1);
+ }
+
return r != LIBMSI_RESULT_SUCCESS;
}