- int c;
- int option_index = 0;
- int parse_err = 0;
- static struct option long_options[] = {
- {"query-all", 0, 0, 'A'},
- {"autoremove", 0, 0, ARGS_OPT_AUTOREMOVE},
- {"cache", 1, 0, ARGS_OPT_CACHE},
- {"conf-file", 1, 0, 'f'},
- {"conf", 1, 0, 'f'},
- {"dest", 1, 0, 'd'},
- {"force-maintainer", 0, 0, ARGS_OPT_FORCE_MAINTAINER},
- {"force_maintainer", 0, 0, ARGS_OPT_FORCE_MAINTAINER},
- {"force-depends", 0, 0, ARGS_OPT_FORCE_DEPENDS},
- {"force_depends", 0, 0, ARGS_OPT_FORCE_DEPENDS},
- {"force-overwrite", 0, 0, ARGS_OPT_FORCE_OVERWRITE},
- {"force_overwrite", 0, 0, ARGS_OPT_FORCE_OVERWRITE},
- {"force_downgrade", 0, 0, ARGS_OPT_FORCE_DOWNGRADE},
- {"force-downgrade", 0, 0, ARGS_OPT_FORCE_DOWNGRADE},
- {"force-reinstall", 0, 0, ARGS_OPT_FORCE_REINSTALL},
- {"force_reinstall", 0, 0, ARGS_OPT_FORCE_REINSTALL},
- {"force-space", 0, 0, ARGS_OPT_FORCE_SPACE},
- {"force_space", 0, 0, ARGS_OPT_FORCE_SPACE},
- {"recursive", 0, 0,
- ARGS_OPT_FORCE_REMOVAL_OF_DEPENDENT_PACKAGES},
- {"force-removal-of-dependent-packages", 0, 0,
- ARGS_OPT_FORCE_REMOVAL_OF_DEPENDENT_PACKAGES},
- {"force_removal_of_dependent_packages", 0, 0,
- ARGS_OPT_FORCE_REMOVAL_OF_DEPENDENT_PACKAGES},
- {"force-removal-of-essential-packages", 0, 0,
- ARGS_OPT_FORCE_REMOVAL_OF_ESSENTIAL_PACKAGES},
- {"force_removal_of_essential_packages", 0, 0,
- ARGS_OPT_FORCE_REMOVAL_OF_ESSENTIAL_PACKAGES},
- {"noaction", 0, 0, ARGS_OPT_NOACTION},
- {"nodeps", 0, 0, ARGS_OPT_NODEPS},
- {"offline", 1, 0, 'o'},
- {"offline-root", 1, 0, 'o'},
- {"test", 0, 0, ARGS_OPT_NOACTION},
- {"tmp-dir", 1, 0, 't'},
- {"tmp_dir", 1, 0, 't'},
- {"verbosity", 2, 0, 'V'},
- {"version", 0, 0, 'v'},
- {0, 0, 0, 0}
- };
-
- while (1) {
- c = getopt_long_only(argc, argv, "Ad:f:no:p:t:vV:", long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c) {
- case 'A':
- conf->query_all = 1;
- break;
- case 'd':
- conf->dest_str = xstrdup(optarg);
- break;
- case 'f':
- conf->conf_file = xstrdup(optarg);
- break;
- case 'o':
- conf->offline_root = xstrdup(optarg);
- break;
- case 't':
- conf->tmp_dir = xstrdup(optarg);
- break;
- case 'v':
- print_version();
- exit(0);
- case 'V':
- conf->verbosity = atoi(optarg);
- break;
- case ARGS_OPT_AUTOREMOVE:
- conf->autoremove = 1;
- break;
- case ARGS_OPT_CACHE:
- free(conf->cache);
- conf->cache = xstrdup(optarg);
- break;
- case ARGS_OPT_FORCE_MAINTAINER:
- conf->force_maintainer = 1;
- break;
- case ARGS_OPT_FORCE_DEPENDS:
- conf->force_depends = 1;
- break;
- case ARGS_OPT_FORCE_OVERWRITE:
- conf->force_overwrite = 1;
- break;
- case ARGS_OPT_FORCE_DOWNGRADE:
- conf->force_downgrade = 1;
- break;
- case ARGS_OPT_FORCE_REINSTALL:
- conf->force_reinstall = 1;
- break;
- case ARGS_OPT_FORCE_REMOVAL_OF_ESSENTIAL_PACKAGES:
- conf->force_removal_of_essential_packages = 1;
- break;
- case ARGS_OPT_FORCE_REMOVAL_OF_DEPENDENT_PACKAGES:
- conf->force_removal_of_dependent_packages = 1;
- break;
- case ARGS_OPT_FORCE_SPACE:
- conf->force_space = 1;
- break;
- case ARGS_OPT_NODEPS:
- conf->nodeps = 1;
- break;
- case ARGS_OPT_NOACTION:
- conf->noaction = 1;
- break;
- case ':':
- parse_err = -1;
- break;
- case '?':
- parse_err = -1;
- break;
- default:
- printf("Confusion: getopt_long returned %d\n", c);
- }
- }
-
- if (parse_err) {
- return parse_err;
- } else {
- return optind;
- }
-}
+ int c;
+ int option_index = 0;
+ int parse_err = 0;
+ char *tuple, *targ;
+
+ while (1) {
+ c = getopt_long_only(argc, argv, "Ad:f:no:p:t:vV::",
+ long_options, &option_index);
+ if (c == -1)
+ break;
+
+ switch (c) {
+ case 'A':
+ conf->query_all = 1;
+ break;
+ case 'd':
+ conf->dest_str = xstrdup(optarg);
+ break;
+ case 'f':
+ conf->conf_file = xstrdup(optarg);
+ break;
+ case 'o':
+ conf->offline_root = xstrdup(optarg);
+ break;
+ case 't':
+ conf->tmp_dir = xstrdup(optarg);
+ break;
+ case 'v':
+ printf("opkg version %s\n", VERSION);
+ exit(0);
+ case 'V':
+ conf->verbosity = INFO;
+ if (optarg != NULL)
+ conf->verbosity = atoi(optarg);
+ break;
+ case ARGS_OPT_AUTOREMOVE:
+ conf->autoremove = 1;
+ break;
+ case ARGS_OPT_CACHE:
+ free(conf->cache);
+ conf->cache = xstrdup(optarg);
+ break;
+ case ARGS_OPT_FORCE_MAINTAINER:
+ conf->force_maintainer = 1;
+ break;
+ case ARGS_OPT_FORCE_DEPENDS:
+ conf->force_depends = 1;
+ break;
+ case ARGS_OPT_FORCE_OVERWRITE:
+ conf->force_overwrite = 1;
+ break;
+ case ARGS_OPT_FORCE_DOWNGRADE:
+ conf->force_downgrade = 1;
+ break;
+ case ARGS_OPT_FORCE_REINSTALL:
+ conf->force_reinstall = 1;
+ break;
+ case ARGS_OPT_FORCE_REMOVAL_OF_ESSENTIAL_PACKAGES:
+ conf->force_removal_of_essential_packages = 1;
+ break;
+ case ARGS_OPT_FORCE_REMOVAL_OF_DEPENDENT_PACKAGES:
+ conf->force_removal_of_dependent_packages = 1;
+ break;
+ case ARGS_OPT_FORCE_SPACE:
+ conf->force_space = 1;
+ break;
+ case ARGS_OPT_FORCE_POSTINSTALL:
+ conf->force_postinstall = 1;
+ break;
+ case ARGS_OPT_FORCE_REMOVE:
+ conf->force_remove = 1;
+ break;
+ case ARGS_OPT_NODEPS:
+ conf->nodeps = 1;
+ break;
+ case ARGS_OPT_ADD_ARCH:
+ case ARGS_OPT_ADD_DEST:
+ tuple = xstrdup(optarg);
+ if ((targ = strchr(tuple, ':')) != NULL) {
+ *targ++ = 0;
+ if ((strlen(tuple) > 0) && (strlen(targ) > 0)) {
+ nv_pair_list_append(
+ (c == ARGS_OPT_ADD_ARCH)
+ ? &conf->arch_list : &conf->tmp_dest_list,
+ tuple, targ);
+ }
+ }
+ free(tuple);
+ break;
+ case ARGS_OPT_NOACTION:
+ conf->noaction = 1;
+ break;
+ case ARGS_OPT_DOWNLOAD_ONLY:
+ conf->download_only = 1;
+ break;
+ case ':':
+ parse_err = -1;
+ break;
+ case '?':
+ parse_err = -1;
+ break;
+ default:
+ printf("Confusion: getopt_long returned %d\n", c);
+ }
+ }