diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-11-30 17:09:20 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2012-12-06 20:30:31 +0100 |
commit | f2cce94a36f41f92b4dac4ef50e06edb13c1078b (patch) | |
tree | d987811cc4e96fa0eac7c8315f1d14280c35ff01 /tools | |
parent | d83e521b6bbdcbb606a1d057e42965f84d023456 (diff) | |
download | msitools-f2cce94a36f41f92b4dac4ef50e06edb13c1078b.tar.gz msitools-f2cce94a36f41f92b4dac4ef50e06edb13c1078b.tar.xz msitools-f2cce94a36f41f92b4dac4ef50e06edb13c1078b.zip |
msiinfo: add tables command
Diffstat (limited to 'tools')
-rw-r--r-- | tools/msiinfo.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tools/msiinfo.c b/tools/msiinfo.c index e9c6288..755df9e 100644 --- a/tools/msiinfo.c +++ b/tools/msiinfo.c @@ -214,6 +214,40 @@ static int cmd_streams(struct Command *cmd, int argc, char **argv) libmsi_unref(db); } +static int cmd_tables(struct Command *cmd, int argc, char **argv) +{ + LibmsiDatabase *db = NULL; + LibmsiQuery *query = NULL; + LibmsiResult r; + + if (argc != 2) { + cmd_usage(stderr, cmd); + } + + r = libmsi_database_open(argv[1], LIBMSI_DB_OPEN_READONLY, &db); + if (r) { + print_libmsi_error(r); + } + + r = libmsi_database_open_query(db, "SELECT `Name` FROM `_Tables`", &query); + if (r) { + print_libmsi_error(r); + } + + r = libmsi_query_execute(query, NULL); + if (r) { + print_libmsi_error(r); + } + + r = print_strings_from_query(query); + if (r) { + print_libmsi_error(r); + } + + libmsi_unref(query); + libmsi_unref(db); +} + static int cmd_version(struct Command *cmd, int argc, char **argv) { printf("%s (%s) version %s\n", program_name, PACKAGE, VERSION); @@ -246,6 +280,12 @@ static struct Command cmds[] = { .func = cmd_streams, }, { + .cmd = "tables", + .opts = "FILE", + .desc = "List tables in a .msi file", + .func = cmd_tables, + }, + { .cmd = "-h", .func = cmd_help, }, |