Don't try to print cmd_name before its initialised. From Amanous, Issue #48.
[oweals/opkg-lede.git] / src / opkg-cl.c
index f1c8f61853fd86ca17be47f7ea03efe2cc3c56b9..ae63012f7f56957a8238139e61a9731802130593 100644 (file)
@@ -40,6 +40,7 @@ enum {
        ARGS_OPT_FORCE_REMOVAL_OF_ESSENTIAL_PACKAGES,
        ARGS_OPT_FORCE_SPACE,
        ARGS_OPT_NOACTION,
+       ARGS_OPT_DOWNLOAD_ONLY,
        ARGS_OPT_NODEPS,
        ARGS_OPT_AUTOREMOVE,
        ARGS_OPT_CACHE,
@@ -74,6 +75,7 @@ static struct option long_options[] = {
        {"force_removal_of_essential_packages", 0, 0,
                ARGS_OPT_FORCE_REMOVAL_OF_ESSENTIAL_PACKAGES},
        {"noaction", 0, 0, ARGS_OPT_NOACTION},
+       {"download-only", 0, 0, ARGS_OPT_DOWNLOAD_ONLY},
        {"nodeps", 0, 0, ARGS_OPT_NODEPS},
        {"offline", 1, 0, 'o'},
        {"offline-root", 1, 0, 'o'},
@@ -157,6 +159,9 @@ args_parse(int argc, char *argv[])
                case ARGS_OPT_NOACTION:
                        conf->noaction = 1;
                        break;
+        case ARGS_OPT_DOWNLOAD_ONLY:
+                       conf->download_only = 1;
+                       break;
                case ':':
                        parse_err = -1;
                        break;
@@ -228,14 +233,15 @@ usage()
        printf("\t--offline-root <dir>  offline installation of packages.\n");
 
        printf("\nForce Options:\n");
-       printf("\t--force-depends               Install/remove despite failed dependences\n");
+       printf("\t--force-depends               Install/remove despite failed dependencies\n");
        printf("\t--force-maintainer    Overwrite preexisting config files\n");
        printf("\t--force-reinstall     Reinstall package(s)\n");
        printf("\t--force-overwrite     Overwrite files from other package(s)\n");
        printf("\t--force-downgrade     Allow opkg to downgrade packages\n");
        printf("\t--force-space         Disable free space checks\n");
        printf("\t--noaction            No action -- test only\n");
-       printf("\t--nodeps              Do not follow dependences\n");
+       printf("\t--download-only       No action -- download only\n");
+       printf("\t--nodeps              Do not follow dependencies\n");
        printf("\t--force-removal-of-dependent-packages\n");
        printf("\t                      Remove package and all dependencies\n");
        printf("\t--autoremove          Remove packages that were installed\n");
@@ -258,16 +264,16 @@ usage()
 int
 main(int argc, char *argv[])
 {
-       int opts;
+       int opts, err = -1;
        char *cmd_name;
        opkg_cmd_t *cmd;
        int nocheckfordirorfile = 0;
         int noreadfeedsfile = 0;
 
+       conf->verbosity = NOTICE;
+
        opts = args_parse(argc, argv);
        if (opts == argc || opts < 0) {
-               fprintf (stderr, "%s: unknown sub-command %s\n", argv[0],
-                        cmd_name);
                fprintf(stderr, "opkg must have one sub-command argument\n");
                usage();
        }
@@ -299,7 +305,6 @@ main(int argc, char *argv[])
                usage();
        }
 
-       conf->verbosity = NOTICE;       
        conf->pfm = cmd->pfm;
 
        if (opkg_conf_init())
@@ -322,15 +327,8 @@ main(int argc, char *argv[])
                usage();
        }
 
-       if (opkg_cmd_exec(cmd, argc - opts, (const char **) (argv + opts)))
-               goto err2;
-
-       print_error_list();
-       free_error_list();
-
-       return 0;
+       err = opkg_cmd_exec(cmd, argc - opts, (const char **) (argv + opts));
 
-err2:
 #ifdef HAVE_CURL
        opkg_curl_cleanup();
 #endif
@@ -341,5 +339,5 @@ err0:
        print_error_list();
        free_error_list();
 
-       return -1;
+       return err;
 }