summaryrefslogtreecommitdiff
path: root/mh/mh_argp.c
diff options
context:
space:
mode:
Diffstat (limited to 'mh/mh_argp.c')
-rw-r--r--mh/mh_argp.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/mh/mh_argp.c b/mh/mh_argp.c
index 8978d4c15..dff019b47 100644
--- a/mh/mh_argp.c
+++ b/mh/mh_argp.c
@@ -219,24 +219,31 @@ mh_argp_parse (int *pargc, char **pargv[],
{
int argc;
char **argv;
- int xargc;
- char **xargv;
int i, j;
+ struct mu_wordsplit ws;
- mu_argcv_get (val, "", NULL, &xargc, &xargv);
+ if (mu_wordsplit (val, &ws, MU_WRDSF_DEFFLAGS))
+ {
+ mu_error (_("cannot split line `%s': %s"), val,
+ mu_wordsplit_strerror (&ws));
+ exit (1);
+ }
- argc = *pargc + xargc;
- argv = calloc (argc+1, sizeof *argv);
+ argc = *pargc + ws.ws_wordc;
+ argv = calloc (argc + 1, sizeof *argv);
if (!argv)
mh_err_memory (1);
i = 0;
argv[i++] = (*pargv)[0];
- for (j = 0; j < xargc; i++, j++)
- argv[i] = xargv[j];
+ for (j = 0; j < ws.ws_wordc; i++, j++)
+ argv[i] = ws.ws_wordv[j];
for (j = 1; i < argc; i++, j++)
argv[i] = (*pargv)[j];
argv[i] = NULL;
+
+ ws.ws_wordc = 0;
+ mu_wordsplit_free (&ws);
mh_argv_preproc (argc, argv, &data);
@@ -246,7 +253,6 @@ mh_argp_parse (int *pargc, char **pargv[],
*pargc = argc;
*pargv = argv;
- free (xargv);
}
else
{

Return to:

Send suggestions and report system problems to the System administrator.