X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fopkg-cl.c;h=993aa66d2a2c65a878ef5dec71bd9ade3ddd0694;hb=c52c31b0d3770e83cb68deb4a13932c803fe382e;hp=3716b5cb5268a8212b6f3bcbc31d6bae413e3800;hpb=6dc8a5d00f1f5244d7c3732dbc21b3763e9066b6;p=oweals%2Fopkg-lede.git diff --git a/src/opkg-cl.c b/src/opkg-cl.c index 3716b5c..993aa66 100644 --- a/src/opkg-cl.c +++ b/src/opkg-cl.c @@ -28,6 +28,7 @@ #include "opkg_cmd.h" #include "file_util.h" #include "opkg_message.h" +#include "opkg_download.h" #include "../libbb/libbb.h" enum { @@ -40,6 +41,9 @@ enum { ARGS_OPT_FORCE_REMOVAL_OF_ESSENTIAL_PACKAGES, ARGS_OPT_FORCE_SPACE, ARGS_OPT_FORCE_POSTINSTALL, + ARGS_OPT_FORCE_REMOVE, + ARGS_OPT_ADD_ARCH, + ARGS_OPT_ADD_DEST, ARGS_OPT_NOACTION, ARGS_OPT_DOWNLOAD_ONLY, ARGS_OPT_NODEPS, @@ -77,11 +81,15 @@ static struct option long_options[] = { ARGS_OPT_FORCE_REMOVAL_OF_ESSENTIAL_PACKAGES}, {"force-postinstall", 0, 0, ARGS_OPT_FORCE_POSTINSTALL}, {"force_postinstall", 0, 0, ARGS_OPT_FORCE_POSTINSTALL}, + {"force-remove", 0, 0, ARGS_OPT_FORCE_REMOVE}, + {"force_remove", 0, 0, ARGS_OPT_FORCE_REMOVE}, {"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'}, + {"add-arch", 1, 0, ARGS_OPT_ADD_ARCH}, + {"add-dest", 1, 0, ARGS_OPT_ADD_DEST}, {"test", 0, 0, ARGS_OPT_NOACTION}, {"tmp-dir", 1, 0, 't'}, {"tmp_dir", 1, 0, 't'}, @@ -96,6 +104,7 @@ args_parse(int argc, char *argv[]) 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::", @@ -161,9 +170,26 @@ args_parse(int argc, char *argv[]) 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; @@ -206,6 +232,7 @@ usage() printf("\tlist List available packages\n"); printf("\tlist-installed List installed packages\n"); printf("\tlist-upgradable List installed and upgradable packages\n"); + printf("\tlist-changed-conffiles List user modified configuration files\n"); printf("\tfiles List files belonging to \n"); printf("\tsearch List package providing \n"); printf("\tinfo [pkg|regexp] Display all info for \n"); @@ -239,6 +266,8 @@ usage() printf(" directory name in a pinch).\n"); printf("\t-o Use as the root directory for\n"); printf("\t--offline-root offline installation of packages.\n"); + printf("\t--add-arch : Register architecture with given priority\n"); + printf("\t--add-dest : Register destination with given path\n"); printf("\nForce Options:\n"); printf("\t--force-depends Install/remove despite failed dependencies\n"); @@ -248,6 +277,7 @@ usage() printf("\t--force-downgrade Allow opkg to downgrade packages\n"); printf("\t--force-space Disable free space checks\n"); printf("\t--force-postinstall Run postinstall scripts even in offline mode\n"); + printf("\t--force-remove Remove package even if prerm script fails\n"); printf("\t--noaction No action -- test only\n"); printf("\t--download-only No action -- download only\n"); printf("\t--nodeps Do not follow dependencies\n"); @@ -279,6 +309,9 @@ main(int argc, char *argv[]) int nocheckfordirorfile = 0; int noreadfeedsfile = 0; + if (opkg_conf_init()) + goto err0; + conf->verbosity = NOTICE; opts = args_parse(argc, argv); @@ -304,6 +337,8 @@ main(int argc, char *argv[]) !strcmp(cmd_name,"compare-versions") || !strcmp(cmd_name,"list_installed") || !strcmp(cmd_name,"list-installed") || + !strcmp(cmd_name,"list_changed_conffiles") || + !strcmp(cmd_name,"list-changed-conffiles") || !strcmp(cmd_name,"status") ) noreadfeedsfile = 1; @@ -316,7 +351,7 @@ main(int argc, char *argv[]) conf->pfm = cmd->pfm; - if (opkg_conf_init()) + if (opkg_conf_load()) goto err0; if (!nocheckfordirorfile) {