summaryrefslogtreecommitdiffstats
path: root/tools/msiinfo.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-12-15 01:34:19 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2013-01-09 13:56:06 +0100
commit5fe3c5109cf2ecd77dd40173f491722689d5af27 (patch)
tree7d482402f067a0eb21a2fbbfbf8a0d6d09579e63 /tools/msiinfo.c
parentcca908516a07398d46adefcde86ee193c18b19eb (diff)
downloadmsitools-5fe3c5109cf2ecd77dd40173f491722689d5af27.tar.gz
msitools-5fe3c5109cf2ecd77dd40173f491722689d5af27.tar.xz
msitools-5fe3c5109cf2ecd77dd40173f491722689d5af27.zip
summary-info: GObject-like API
Diffstat (limited to 'tools/msiinfo.c')
-rw-r--r--tools/msiinfo.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/tools/msiinfo.c b/tools/msiinfo.c
index 8043f0d..fdf963c 100644
--- a/tools/msiinfo.c
+++ b/tools/msiinfo.c
@@ -260,10 +260,11 @@ static int cmd_tables(struct Command *cmd, int argc, char **argv)
static void print_suminfo(LibmsiSummaryInfo *si, int prop, const char *name)
{
+ GError *error = NULL;
unsigned type;
+ const gchar* str;
int val;
uint64_t valtime;
- char *buf;
unsigned sz;
unsigned r;
time_t t;
@@ -276,20 +277,23 @@ static void print_suminfo(LibmsiSummaryInfo *si, int prop, const char *name)
switch (type) {
case LIBMSI_PROPERTY_TYPE_INT:
+ val = libmsi_summary_info_get_int(si, prop, &error);
+ if (error)
+ goto end;
printf ("%s: %d (%x)\n", name, val, val);
break;
case LIBMSI_PROPERTY_TYPE_STRING:
- buf = g_malloc(++sz);
- r = libmsi_summary_info_get_property(si, prop, NULL, NULL, NULL, buf, &sz);
- if (r) {
- print_libmsi_error(r);
- }
- printf ("%s: %s\n", name, buf);
- free(buf);
+ str = libmsi_summary_info_get_string(si, prop, &error);
+ if (error)
+ goto end;
+ printf ("%s: %s\n", name, str);
break;
case LIBMSI_PROPERTY_TYPE_FILETIME:
+ valtime = libmsi_summary_info_get_filetime(si, prop, &error);
+ if (error)
+ goto end;
/* Convert nanoseconds since 1601 to seconds since Unix epoch. */
t = (valtime / 10000000) - (uint64_t) 134774 * 86400;
printf ("%s: %s", name, ctime(&t));
@@ -301,6 +305,11 @@ static void print_suminfo(LibmsiSummaryInfo *si, int prop, const char *name)
default:
abort();
}
+
+end:
+ if (error)
+ g_warning("Can't print summary info: %s", error->message);
+ g_clear_error(&error);
}
static int cmd_suminfo(struct Command *cmd, int argc, char **argv)