[pacman-dev] [PATCH 2/7] use non-ascii identifiers for optflags
Andrew Gregory
andrew.gregory.8 at gmail.com
Sat Oct 12 13:32:05 EDT 2013
Removes the overlap between optflags for different operations that
allowed non-sensical combinations of flags such as:
$ pacman -Si --changelog $package
--changelog is -c, meaning --clean for -S
$ pacman -Q --sysupgrade
--sysupgrade is -u, meaning --upgrades for -Q
Also add a few missing braces.
Original-work-by: Dave Reisner <dreisner at archlinux.org>
Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
---
src/pacman/conf.h | 31 ++++++-
src/pacman/pacman.c | 245 +++++++++++++++++++++++++++++++++++++---------------
2 files changed, 206 insertions(+), 70 deletions(-)
diff --git a/src/pacman/conf.h b/src/pacman/conf.h
index dcd3204..e263d7c 100644
--- a/src/pacman/conf.h
+++ b/src/pacman/conf.h
@@ -146,7 +146,36 @@ enum {
OP_GPGDIR,
OP_DBONLY,
OP_FORCE,
- OP_COLOR
+ OP_COLOR,
+ OP_DBPATH,
+ OP_CASCADE,
+ OP_CHANGELOG,
+ OP_CLEAN,
+ OP_NODEPS,
+ OP_DEPS,
+ OP_EXPLICIT,
+ OP_GROUPS,
+ OP_HELP,
+ OP_INFO,
+ OP_CHECK,
+ OP_LIST,
+ OP_FOREIGN,
+ OP_NATIVE,
+ OP_NOSAVE,
+ OP_OWNS,
+ OP_FILE,
+ OP_PRINT,
+ OP_QUIET,
+ OP_ROOT,
+ OP_RECURSIVE,
+ OP_SEARCH,
+ OP_UNREQUIRED,
+ OP_UPGRADES,
+ OP_SYSUPGRADE,
+ OP_UNNEEDED,
+ OP_VERBOSE,
+ OP_DOWNLOADONLY,
+ OP_REFRESH
};
/* clean method */
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index d2114e6..93baa44 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -446,14 +446,25 @@ static int parsearg_global(int opt)
check_optarg();
config->logfile = strndup(optarg, PATH_MAX);
break;
- case OP_NOCONFIRM: config->noconfirm = 1; break;
+ case OP_NOCONFIRM:
+ config->noconfirm = 1;
+ break;
+ case OP_DBPATH:
case 'b':
check_optarg();
config->dbpath = strdup(optarg);
break;
- case 'r': check_optarg(); config->rootdir = strdup(optarg); break;
- case 'v': (config->verbose)++; break;
- default: return 1;
+ case OP_ROOT:
+ case 'r':
+ check_optarg();
+ config->rootdir = strdup(optarg);
+ break;
+ case OP_VERBOSE:
+ case 'v':
+ (config->verbose)++;
+ break;
+ default:
+ return 1;
}
return 0;
}
@@ -471,22 +482,67 @@ static int parsearg_database(int opt)
static int parsearg_query(int opt)
{
switch(opt) {
- case 'c': config->op_q_changelog = 1; break;
- case 'd': config->op_q_deps = 1; break;
- case 'e': config->op_q_explicit = 1; break;
- case 'g': (config->group)++; break;
- case 'i': (config->op_q_info)++; break;
- case 'k': (config->op_q_check)++; break;
- case 'l': config->op_q_list = 1; break;
- case 'm': config->op_q_locality |= PKG_LOCALITY_LOCAL; break;
- case 'n': config->op_q_locality |= PKG_LOCALITY_FOREIGN; break;
- case 'o': config->op_q_owns = 1; break;
- case 'p': config->op_q_isfile = 1; break;
- case 'q': config->quiet = 1; break;
- case 's': config->op_q_search = 1; break;
- case 't': (config->op_q_unrequired)++; break;
- case 'u': config->op_q_upgrade = 1; break;
- default: return 1;
+ case OP_CHANGELOG:
+ case 'c':
+ config->op_q_changelog = 1;
+ break;
+ case OP_DEPS:
+ case 'd':
+ config->op_q_deps = 1;
+ break;
+ case OP_EXPLICIT:
+ case 'e':
+ config->op_q_explicit = 1;
+ break;
+ case OP_GROUPS:
+ case 'g':
+ (config->group)++;
+ break;
+ case OP_INFO:
+ case 'i':
+ (config->op_q_info)++;
+ break;
+ case OP_CHECK:
+ case 'k':
+ (config->op_q_check)++;
+ break;
+ case OP_LIST:
+ case 'l':
+ config->op_q_list = 1;
+ break;
+ case OP_FOREIGN:
+ case 'm':
+ config->op_q_locality |= PKG_LOCALITY_LOCAL;
+ break;
+ case OP_NATIVE:
+ case 'n':
+ config->op_q_locality |= PKG_LOCALITY_FOREIGN;
+ break;
+ case OP_OWNS:
+ case 'o':
+ config->op_q_owns = 1;
+ break;
+ case OP_FILE:
+ case 'p':
+ config->op_q_isfile = 1;
+ break;
+ case OP_QUIET:
+ case 'q':
+ config->quiet = 1;
+ break;
+ case OP_SEARCH:
+ case 's':
+ config->op_q_search = 1;
+ break;
+ case OP_UNREQUIRED:
+ case 't':
+ (config->op_q_unrequired)++;
+ break;
+ case OP_UPGRADES:
+ case 'u':
+ config->op_q_upgrade = 1; break;
+ default:
+ return 1;
}
return 0;
}
@@ -495,6 +551,7 @@ static int parsearg_query(int opt)
static int parsearg_trans(int opt)
{
switch(opt) {
+ case OP_NODEPS:
case 'd':
if(config->flags & ALPM_TRANS_FLAG_NODEPVERSION) {
config->flags |= ALPM_TRANS_FLAG_NODEPS;
@@ -502,26 +559,44 @@ static int parsearg_trans(int opt)
config->flags |= ALPM_TRANS_FLAG_NODEPVERSION;
}
break;
- case OP_DBONLY: config->flags |= ALPM_TRANS_FLAG_DBONLY; break;
- case OP_NOPROGRESSBAR: config->noprogressbar = 1; break;
- case OP_NOSCRIPTLET: config->flags |= ALPM_TRANS_FLAG_NOSCRIPTLET; break;
- case 'p': config->print = 1; break;
+ case OP_DBONLY:
+ config->flags |= ALPM_TRANS_FLAG_DBONLY;
+ break;
+ case OP_NOPROGRESSBAR:
+ config->noprogressbar = 1;
+ break;
+ case OP_NOSCRIPTLET:
+ config->flags |= ALPM_TRANS_FLAG_NOSCRIPTLET;
+ break;
+ case OP_PRINT:
+ case 'p':
+ config->print = 1;
+ break;
case OP_PRINTFORMAT:
check_optarg();
config->print_format = strdup(optarg);
break;
- default: return 1;
+ default:
+ return 1;
}
return 0;
}
static int parsearg_remove(int opt)
{
- if(parsearg_trans(opt) == 0)
+ if(parsearg_trans(opt) == 0) {
return 0;
+ }
switch(opt) {
- case 'c': config->flags |= ALPM_TRANS_FLAG_CASCADE; break;
- case 'n': config->flags |= ALPM_TRANS_FLAG_NOSAVE; break;
+ case OP_CASCADE:
+ case 'c':
+ config->flags |= ALPM_TRANS_FLAG_CASCADE;
+ break;
+ case OP_NOSAVE:
+ case 'n':
+ config->flags |= ALPM_TRANS_FLAG_NOSAVE;
+ break;
+ case OP_RECURSIVE:
case 's':
if(config->flags & ALPM_TRANS_FLAG_RECURSE) {
config->flags |= ALPM_TRANS_FLAG_RECURSEALL;
@@ -529,8 +604,12 @@ static int parsearg_remove(int opt)
config->flags |= ALPM_TRANS_FLAG_RECURSE;
}
break;
- case 'u': config->flags |= ALPM_TRANS_FLAG_UNNEEDED; break;
- default: return 1;
+ case OP_UNNEEDED:
+ case 'u':
+ config->flags |= ALPM_TRANS_FLAG_UNNEEDED;
+ break;
+ default:
+ return 1;
}
return 0;
}
@@ -538,8 +617,9 @@ static int parsearg_remove(int opt)
/* options common to -S -U */
static int parsearg_upgrade(int opt)
{
- if(parsearg_trans(opt) == 0)
+ if(parsearg_trans(opt) == 0) {
return 0;
+ }
switch(opt) {
case OP_FORCE: config->flags |= ALPM_TRANS_FLAG_FORCE; break;
case OP_ASDEPS: config->flags |= ALPM_TRANS_FLAG_ALLDEPS; break;
@@ -558,23 +638,50 @@ static int parsearg_upgrade(int opt)
static int parsearg_sync(int opt)
{
- if(parsearg_upgrade(opt) == 0)
+ if(parsearg_upgrade(opt) == 0) {
return 0;
+ }
switch(opt) {
- case 'c': (config->op_s_clean)++; break;
- case 'g': (config->group)++; break;
- case 'i': (config->op_s_info)++; break;
- case 'l': config->op_q_list = 1; break;
- case 'q': config->quiet = 1; break;
- case 's': config->op_s_search = 1; break;
- case 'u': (config->op_s_upgrade)++; break;
+ case OP_CLEAN:
+ case 'c':
+ (config->op_s_clean)++;
+ break;
+ case OP_GROUPS:
+ case 'g':
+ (config->group)++;
+ break;
+ case OP_INFO:
+ case 'i':
+ (config->op_s_info)++;
+ break;
+ case OP_LIST:
+ case 'l':
+ config->op_q_list = 1;
+ break;
+ case OP_QUIET:
+ case 'q':
+ config->quiet = 1;
+ break;
+ case OP_SEARCH:
+ case 's':
+ config->op_s_search = 1;
+ break;
+ case OP_SYSUPGRADE:
+ case 'u':
+ (config->op_s_upgrade)++;
+ break;
+ case OP_DOWNLOADONLY:
case 'w':
config->op_s_downloadonly = 1;
config->flags |= ALPM_TRANS_FLAG_DOWNLOADONLY;
config->flags |= ALPM_TRANS_FLAG_NOCONFLICTS;
break;
- case 'y': (config->op_s_sync)++; break;
- default: return 1;
+ case OP_REFRESH:
+ case 'y':
+ (config->op_s_sync)++;
+ break;
+ default:
+ return 1;
}
return 0;
}
@@ -599,36 +706,36 @@ static int parseargs(int argc, char *argv[])
{"deptest", no_argument, 0, 'T'}, /* used by makepkg */
{"upgrade", no_argument, 0, 'U'},
{"version", no_argument, 0, 'V'},
- {"dbpath", required_argument, 0, 'b'},
- {"cascade", no_argument, 0, 'c'},
- {"changelog", no_argument, 0, 'c'},
- {"clean", no_argument, 0, 'c'},
- {"nodeps", no_argument, 0, 'd'},
- {"deps", no_argument, 0, 'd'},
- {"explicit", no_argument, 0, 'e'},
- {"groups", no_argument, 0, 'g'},
{"help", no_argument, 0, 'h'},
- {"info", no_argument, 0, 'i'},
- {"check", no_argument, 0, 'k'},
- {"list", no_argument, 0, 'l'},
- {"foreign", no_argument, 0, 'm'},
- {"native", no_argument, 0, 'n'},
- {"nosave", no_argument, 0, 'n'},
- {"owns", no_argument, 0, 'o'},
- {"file", no_argument, 0, 'p'},
- {"print", no_argument, 0, 'p'},
- {"quiet", no_argument, 0, 'q'},
- {"root", required_argument, 0, 'r'},
- {"recursive", no_argument, 0, 's'},
- {"search", no_argument, 0, 's'},
- {"unrequired", no_argument, 0, 't'},
- {"upgrades", no_argument, 0, 'u'},
- {"sysupgrade", no_argument, 0, 'u'},
- {"unneeded", no_argument, 0, 'u'},
- {"verbose", no_argument, 0, 'v'},
- {"downloadonly", no_argument, 0, 'w'},
- {"refresh", no_argument, 0, 'y'},
+ {"dbpath", required_argument, 0, OP_DBPATH},
+ {"cascade", no_argument, 0, OP_CASCADE},
+ {"changelog", no_argument, 0, OP_CHANGELOG},
+ {"clean", no_argument, 0, OP_CLEAN},
+ {"nodeps", no_argument, 0, OP_NODEPS},
+ {"deps", no_argument, 0, OP_DEPS},
+ {"explicit", no_argument, 0, OP_EXPLICIT},
+ {"groups", no_argument, 0, OP_GROUPS},
+ {"info", no_argument, 0, OP_INFO},
+ {"check", no_argument, 0, OP_CHECK},
+ {"list", no_argument, 0, OP_LIST},
+ {"foreign", no_argument, 0, OP_FOREIGN},
+ {"native", no_argument, 0, OP_NATIVE},
+ {"nosave", no_argument, 0, OP_NOSAVE},
+ {"owns", no_argument, 0, OP_OWNS},
+ {"file", no_argument, 0, OP_FILE},
+ {"print", no_argument, 0, OP_PRINT},
+ {"quiet", no_argument, 0, OP_QUIET},
+ {"root", required_argument, 0, OP_ROOT},
+ {"recursive", no_argument, 0, OP_RECURSIVE},
+ {"search", no_argument, 0, OP_SEARCH},
+ {"unrequired", no_argument, 0, OP_UNREQUIRED},
+ {"upgrades", no_argument, 0, OP_UPGRADES},
+ {"sysupgrade", no_argument, 0, OP_SYSUPGRADE},
+ {"unneeded", no_argument, 0, OP_UNNEEDED},
+ {"verbose", no_argument, 0, OP_VERBOSE},
+ {"downloadonly", no_argument, 0, OP_DOWNLOADONLY},
+ {"refresh", no_argument, 0, OP_REFRESH},
{"noconfirm", no_argument, 0, OP_NOCONFIRM},
{"config", required_argument, 0, OP_CONFIG},
{"ignore", required_argument, 0, OP_IGNORE},
--
1.8.4
More information about the pacman-dev
mailing list