X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/6476fbdc9473dbb317d2775d487c8b5fd771995a..c4d3d44d8e7fe87e6c889c116c267954fca9ac1e:/src/upkg.c diff --git a/src/upkg.c b/src/upkg.c index f7ace2a..1e2c662 100644 --- a/src/upkg.c +++ b/src/upkg.c @@ -40,10 +40,11 @@ enum { int verbose = 0; static const char *progname = "upkg"; -static const char *sopts = "ixvVH"; +static const char *sopts = "ixvf:VH"; static const struct option lopts[] = { { "info", 0, NULL, 'i' }, { "export", 0, NULL, 'x' }, + { "file", 1, NULL, 'f' }, { "verbose", 0, NULL, 'v' }, { "version", 0, NULL, 'V' }, { "help", 0, NULL, 'H' }, @@ -63,7 +64,7 @@ There is NO WARRANTY, to the extent permitted by law." void print_usage(FILE *f) { - fprintf(f, "Usage: %s [options] package\n", progname); + fprintf(f, "Usage: %s [options]\n", progname); } void print_help(void) @@ -288,14 +289,26 @@ int package_export(struct upkg *pkg) int main(int argc, char **argv) { GTypeModule *pkg; - const char *pkgname; + const char *pkgname = NULL; unsigned mode = MODE_INFO; int opt, rc = EXIT_FAILURE; if (argc > 0) progname = argv[0]; + if (u_pkg_vfs_init() != 0) + return EXIT_FAILURE; + if (u_object_module_init() != 0) + return EXIT_FAILURE; + while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) { switch (opt) { + case 'f': + pkgname = u_pkg_vfs_add_local(NULL, optarg); + if (!pkgname) { + fprintf(stderr, "failed to add package `%s'.\n", optarg); + return EXIT_FAILURE; + } + break; case 'i': mode = MODE_INFO; break; @@ -317,19 +330,8 @@ int main(int argc, char **argv) } } - if (argv[optind] == NULL) { - print_usage(stderr); - return EXIT_FAILURE; - } - - if (u_pkg_vfs_init() != 0) - return EXIT_FAILURE; - if (u_object_module_init() != 0) - return EXIT_FAILURE; - - pkgname = u_pkg_vfs_add_local(NULL, argv[optind]); if (!pkgname) { - fprintf(stderr, "failed to add package `%s'.\n", argv[optind]); + print_usage(stderr); return EXIT_FAILURE; } @@ -339,7 +341,7 @@ int main(int argc, char **argv) return EXIT_FAILURE; } - if (!g_type_module_use(pkg)) { + if (!g_type_module_use(pkg) || !U_PKG(pkg)->pkg) { fprintf(stderr, "failed to load package: %s\n", pkg->name); return EXIT_FAILURE; }