summaryrefslogtreecommitdiff
path: root/mh/mh_getopt.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-12-19 16:13:02 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2016-12-19 16:13:02 +0200
commitfb8195c07ba6c6a3afa7da1f028410723e9073a4 (patch)
treef852731a6b2d46337fdbde6458f3423946ffffd2 /mh/mh_getopt.c
parent8ce3063351c0139d8f1fa1c30d5c8de28050883e (diff)
downloadmailutils-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.c47
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);

Return to:

Send suggestions and report system problems to the System administrator.