diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2003-11-04 14:32:51 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2003-11-04 14:32:51 +0000 |
commit | 1ba6eea721a11d23f4d6f1a7996a4c879b60b8d6 (patch) | |
tree | ef7b2134f078aa6262ceb6ad37bd9dace58c26ce /mh | |
parent | 6cd84cb1c8ff0fcc1d582db9b79930d2084c9483 (diff) | |
download | mailutils-1ba6eea721a11d23f4d6f1a7996a4c879b60b8d6.tar.gz mailutils-1ba6eea721a11d23f4d6f1a7996a4c879b60b8d6.tar.bz2 |
(mh_argp_parse): Changed prototype.
Diffstat (limited to 'mh')
-rw-r--r-- | mh/mh_argp.c | 51 | ||||
-rw-r--r-- | mh/mh_getopt.h | 2 |
2 files changed, 27 insertions, 26 deletions
diff --git a/mh/mh_argp.c b/mh/mh_argp.c index 8bf35d213..0d6691d3c 100644 --- a/mh/mh_argp.c +++ b/mh/mh_argp.c @@ -95,7 +95,7 @@ my_argp_parse (struct argp *argp, int argc, char **argv, int flags, } int -mh_argp_parse (int argc, char **argv, +mh_argp_parse (int *pargc, char **pargv[], int flags, struct argp_option *option, struct mh_option *mh_option, @@ -108,8 +108,8 @@ mh_argp_parse (int argc, char **argv, int index; int extra = 0; - program_invocation_name = argv[0]; - p = strrchr (argv[0], '/'); + program_invocation_name = (*pargv)[0]; + p = strrchr ((*pargv)[0], '/'); if (p) program_invocation_short_name = p+1; else @@ -131,41 +131,42 @@ mh_argp_parse (int argc, char **argv, p = mh_global_profile_get (program_invocation_short_name, NULL); if (p) { - int _argc; - char **_argv; + int argc; + char **argv; int xargc; char **xargv; int i, j; argcv_get (p, "", NULL, &xargc, &xargv); - _argc = argc + xargc; - _argv = calloc (_argc+1, sizeof *_argv); - if (!_argv) + argc = *pargc + xargc; + argv = calloc (argc+1, sizeof *argv); + if (!argv) mh_err_memory (1); i = 0; - _argv[i++] = argv[0]; + argv[i++] = (*pargv)[0]; for (j = 0; j < xargc; i++, j++) - _argv[i] = xargv[j]; - for (j = 1; i < _argc; i++, j++) - _argv[i] = argv[j]; - _argv[i] = NULL; - mh_argv_preproc (_argc, _argv, &data); - - my_argp_parse (&argp, _argc, _argv, flags, &index, &data); - - free (_argv); - extra = index < _argc; - index -= xargc; - if (index < 0) - index = argc; - } - else - { + argv[i] = xargv[j]; + for (j = 1; i < argc; i++, j++) + argv[i] = (*pargv)[j]; + argv[i] = NULL; + mh_argv_preproc (argc, argv, &data); + my_argp_parse (&argp, argc, argv, flags, &index, &data); + extra = index < argc; + + *pargc = argc; + *pargv = argv; + free (xargv); + } + else + { + mh_argv_preproc (*pargc, *pargv, &data); + my_argp_parse (&argp, *pargc, *pargv, flags, &index, &data); + extra = index < *pargc; } if (pindex) *pindex = index; diff --git a/mh/mh_getopt.h b/mh/mh_getopt.h index 50fc65a7e..a2258c815 100644 --- a/mh/mh_getopt.h +++ b/mh/mh_getopt.h @@ -178,7 +178,7 @@ struct mh_argp_data void mh_argv_preproc __P((int argc, char **argv, struct mh_argp_data *data)); int mh_getopt __P((int argc, char **argv, struct mh_option *mh_opt, const char *doc)); -int mh_argp_parse __P((int argc, char **argv, +int mh_argp_parse __P((int *argc, char **argv[], int flags, struct argp_option *option, struct mh_option *mh_option, |