[pacman-dev] [PATCH] Use non-ascii identifiers for overloaded optflags
Dave Reisner
dreisner at archlinux.org
Thu Feb 21 13:42:20 EST 2013
This prevents "non-sensical" combinations of flags from being
misinterpreted, such as:
$ pacman -Si --changelog $package
--changelog is -c, meaning --clean for -S
$ pacman -Q --sysupgrade
--sysupgrade is -u, meaning --upgrades for -Q
Signed-off-by: Dave Reisner <dreisner at archlinux.org>
---
src/pacman/conf.h | 16 ++++++++++++++-
src/pacman/pacman.c | 56 ++++++++++++++++++++++++++---------------------------
2 files changed, 43 insertions(+), 29 deletions(-)
diff --git a/src/pacman/conf.h b/src/pacman/conf.h
index d85d11f..c1fd499 100644
--- a/src/pacman/conf.h
+++ b/src/pacman/conf.h
@@ -129,7 +129,21 @@ enum {
OP_PRINTFORMAT,
OP_GPGDIR,
OP_DBONLY,
- OP_FORCE
+ OP_FORCE,
+ OP_CASCADE,
+ OP_CHANGELOG,
+ OP_CLEAN,
+ OP_NODEPS,
+ OP_DEPS,
+ OP_NATIVE,
+ OP_NOSAVE,
+ OP_FILE,
+ OP_PRINT,
+ OP_RECURSIVE,
+ OP_SEARCH,
+ OP_UPGRADES,
+ OP_SYSUPGRADE,
+ OP_UNNEEDED
};
/* clean method */
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 38b28e1..513243a 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -456,21 +456,21 @@ 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 OP_CHANGELOG: config->op_q_changelog = 1; break;
+ case OP_DEPS: 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 OP_NATIVE: 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 OP_FILE: config->op_q_isfile = 1; break;
case 'q': config->quiet = 1; break;
- case 's': config->op_q_search = 1; break;
+ case OP_SEARCH: config->op_q_search = 1; break;
case 't': config->op_q_unrequired = 1; break;
- case 'u': config->op_q_upgrade = 1; break;
+ case OP_UPGRADES: config->op_q_upgrade = 1; break;
default: return 1;
}
return 0;
@@ -480,7 +480,7 @@ static int parsearg_query(int opt)
static int parsearg_trans(int opt)
{
switch(opt) {
- case 'd':
+ case OP_NODEPS:
if(config->flags & ALPM_TRANS_FLAG_NODEPVERSION) {
config->flags |= ALPM_TRANS_FLAG_NODEPS;
} else {
@@ -490,7 +490,7 @@ static int parsearg_trans(int opt)
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_PRINT: config->print = 1; break;
case OP_PRINTFORMAT:
check_optarg();
config->print_format = strdup(optarg);
@@ -505,16 +505,16 @@ static int parsearg_remove(int opt)
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 's':
+ case OP_CASCADE: config->flags |= ALPM_TRANS_FLAG_CASCADE; break;
+ case OP_NOSAVE: config->flags |= ALPM_TRANS_FLAG_NOSAVE; break;
+ case OP_RECURSIVE:
if(config->flags & ALPM_TRANS_FLAG_RECURSE) {
config->flags |= ALPM_TRANS_FLAG_RECURSEALL;
} else {
config->flags |= ALPM_TRANS_FLAG_RECURSE;
}
break;
- case 'u': config->flags |= ALPM_TRANS_FLAG_UNNEEDED; break;
+ case OP_UNNEEDED: config->flags |= ALPM_TRANS_FLAG_UNNEEDED; break;
default: return 1;
}
return 0;
@@ -546,13 +546,13 @@ static int parsearg_sync(int opt)
if(parsearg_upgrade(opt) == 0)
return 0;
switch(opt) {
- case 'c': (config->op_s_clean)++; break;
+ case OP_CLEAN: (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_SYSUPGRADE: (config->op_s_upgrade)++; break;
case 'w':
config->op_s_downloadonly = 1;
config->flags |= ALPM_TRANS_FLAG_DOWNLOADONLY;
@@ -585,11 +585,11 @@ static int parseargs(int argc, char *argv[])
{"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'},
+ {"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, 'e'},
{"groups", no_argument, 0, 'g'},
{"help", no_argument, 0, 'h'},
@@ -597,19 +597,19 @@ static int parseargs(int argc, char *argv[])
{"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'},
+ {"native", no_argument, 0, OP_NATIVE},
+ {"nosave", no_argument, 0, OP_NOSAVE},
{"owns", no_argument, 0, 'o'},
- {"file", no_argument, 0, 'p'},
- {"print", no_argument, 0, 'p'},
+ {"file", no_argument, 0, OP_FILE},
+ {"print", no_argument, 0, OP_PRINT},
{"quiet", no_argument, 0, 'q'},
{"root", required_argument, 0, 'r'},
- {"recursive", no_argument, 0, 's'},
- {"search", no_argument, 0, 's'},
+ {"recursive", no_argument, 0, OP_RECURSIVE},
+ {"search", no_argument, 0, OP_SEARCH},
{"unrequired", no_argument, 0, 't'},
- {"upgrades", no_argument, 0, 'u'},
- {"sysupgrade", no_argument, 0, 'u'},
- {"unneeded", no_argument, 0, 'u'},
+ {"upgrades", no_argument, 0, OP_UPGRADES},
+ {"sysupgrade", no_argument, 0, OP_SYSUPGRADE},
+ {"unneeded", no_argument, 0, OP_UNNEEDED},
{"verbose", no_argument, 0, 'v'},
{"downloadonly", no_argument, 0, 'w'},
{"refresh", no_argument, 0, 'y'},
--
1.8.1.4
More information about the pacman-dev
mailing list