From 7df6d63d11473ca5adb5e29abed1aaa2a5196b48 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Wed, 9 Dec 2009 23:34:13 -0500 Subject: [PATCH] upkg: Specify package files as options. Now, one must run "upkg -f foo.u" where previously one would run "upkg foo.u". This new syntax allows multiple packages to be specified on the command line for purposes of dependency resolution and (soon) extraction of specific objects. The package operated upon is the last one specified in this manner. --- src/upkg.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/upkg.c b/src/upkg.c index f7ace2a..191444e 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; } -- 2.43.0