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 <[email protected]>
---
 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


Reply via email to