use non-ascii identifiers for optflags

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@archlinux.org>
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Andrew Gregory 2013-10-12 13:32:05 -04:00 committed by Allan McRae
parent 0fc9545546
commit 122e16106f
2 changed files with 206 additions and 70 deletions

View File

@ -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 */

View File

@ -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},