diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-12-19 16:13:02 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-12-19 16:13:02 +0200 |
commit | fb8195c07ba6c6a3afa7da1f028410723e9073a4 (patch) | |
tree | f852731a6b2d46337fdbde6458f3423946ffffd2 /mh/mh_getopt.c | |
parent | 8ce3063351c0139d8f1fa1c30d5c8de28050883e (diff) | |
download | mailutils-fb8195c07ba6c6a3afa7da1f028410723e9073a4.tar.gz mailutils-fb8195c07ba6c6a3afa7da1f028410723e9073a4.tar.bz2 |
Fix fb84d1e3
The commit didn't take into account all possible option/argument combinations.
* mh/pick.c (main): Preprocess command line prior to parsing it,
expanding --COMP NAME in -component COMP -pattern NAME.
* mh/mh_getopt.c: Revert fb84d1e3
* mh/mh_getopt.h: Likewise.
Diffstat (limited to 'mh/mh_getopt.c')
-rw-r--r-- | mh/mh_getopt.c | 47 |
1 files changed, 8 insertions, 39 deletions
diff --git a/mh/mh_getopt.c b/mh/mh_getopt.c index 211f57f49..0e7ec3cff 100644 --- a/mh/mh_getopt.c +++ b/mh/mh_getopt.c @@ -178,11 +178,9 @@ has_folder_option (struct mu_option *opt) } void -mh_getopt0 (int *pargc, char ***pargv, struct mu_option *options, - int mhflags, - char *argdoc, char *progdoc, char *extradoc, - int (*eatarg) (int argc, char **argv, void *data), - void *data) +mh_getopt (int *pargc, char ***pargv, struct mu_option *options, + int mhflags, + char *argdoc, char *progdoc, char *extradoc) { int argc = *pargc; char **argv = *pargv; @@ -199,9 +197,6 @@ mh_getopt0 (int *pargc, char ***pargv, struct mu_option *options, po.po_negation = "no"; flags |= MU_PARSEOPT_NEGATION; - if (eatarg) - flags |= MU_PARSEOPT_IN_ORDER; - if ((mhflags & MH_GETOPT_DEFAULT_FOLDER) || has_folder_option (options)) { po.po_special_args = N_("[+FOLDER]"); @@ -259,29 +254,12 @@ mh_getopt0 (int *pargc, char ***pargv, struct mu_option *options, if (options) optv[i++] = options; optv[i] = NULL; + + if (mu_parseopt (&po, argc, argv, optv, flags)) + exit (po.po_exit_error); - do - { - if (mu_parseopt (&po, argc, argv, optv, flags)) - exit (po.po_exit_error); - argc -= po.po_arg_start; - argv += po.po_arg_start; - if (eatarg) - { - int consumed = eatarg (argc, argv, data); - if (consumed == 0) - break; - else - { - argc -= consumed; - argv += consumed; - } - flags |= MU_PARSEOPT_ARGV0; - } - else - break; - } - while (argc > 0); + argc -= po.po_arg_start; + argv += po.po_arg_start; process_std_options (argc, argv, &po); @@ -305,15 +283,6 @@ mh_getopt0 (int *pargc, char ***pargv, struct mu_option *options, } void -mh_getopt (int *pargc, char ***pargv, struct mu_option *options, - int mhflags, - char *argdoc, char *progdoc, char *extradoc) -{ - return mh_getopt0 (pargc, pargv, options, mhflags, argdoc, progdoc, extradoc, - NULL, NULL); -} - -void mh_opt_notimpl (struct mu_parseopt *po, struct mu_option *opt, char const *arg) { mu_error (_("option is not yet implemented: %s"), opt->opt_long); |