diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2012-12-12 01:32:03 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2013-01-09 13:56:06 +0100 |
commit | e14bf3cdcf43bce1592c950472b9f87b77fb2f39 (patch) | |
tree | 46df0344f038fde1a789ea9c3239598682cca983 /tools/msibuild.c | |
parent | 6767f692eddc4a2c6c1cb211c1620c4d4196c9f2 (diff) | |
download | msitools-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.c | 17 |
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; } |