[pacman-dev] [PATCH] Use non-ascii identifiers for overloaded optflags

Dan McGee dpmcgee at gmail.com
Thu Feb 21 16:14:04 EST 2013


On Thu, Feb 21, 2013 at 12:42 PM, Dave Reisner <dreisner at archlinux.org> wrote:
> 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>
> ---
Almost wonder if we should just be uniform and do them all like this?
Would prevent someone from reintroducing a bad overlap again in the
future.

>  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