26 |
#include <string.h> |
#include <string.h> |
27 |
#include <mailutils/argcv.h> |
#include <mailutils/argcv.h> |
28 |
|
|
|
struct mh_argp_data |
|
|
{ |
|
|
struct mh_option *mh_option; |
|
|
int (*handler)(); |
|
|
void *closure; |
|
|
char *doc; |
|
|
}; |
|
|
|
|
29 |
static error_t |
static error_t |
30 |
parse_opt (int key, char *arg, struct argp_state *state) |
parse_opt (int key, char *arg, struct argp_state *state) |
31 |
{ |
{ |
33 |
switch (key) |
switch (key) |
34 |
{ |
{ |
35 |
case ARGP_KEY_INIT: |
case ARGP_KEY_INIT: |
|
while ((key = mh_getopt (state->argc, state->argv, data->mh_option, |
|
|
data->doc)) |
|
|
!= EOF |
|
|
&& key != '?') |
|
|
{ |
|
|
data->handler (key, mh_optarg, data->closure); |
|
|
} |
|
|
state->next = mh_optind; |
|
36 |
break; |
break; |
37 |
|
|
38 |
case ARGP_KEY_ARG: |
case ARGP_KEY_ARG: |
109 |
for (j = 1; i < _argc; i++, j++) |
for (j = 1; i < _argc; i++, j++) |
110 |
_argv[i] = argv[j]; |
_argv[i] = argv[j]; |
111 |
_argv[i] = NULL; |
_argv[i] = NULL; |
112 |
|
mh_argv_preproc (_argc, _argv, &data); |
113 |
argp_parse (&argp, _argc, _argv, 0, &index, &data); |
argp_parse (&argp, _argc, _argv, 0, &index, &data); |
114 |
free (_argv); |
free (_argv); |
115 |
extra = index < _argc; |
extra = index < _argc; |
119 |
} |
} |
120 |
else |
else |
121 |
{ |
{ |
122 |
|
mh_argv_preproc (argc, argv, &data); |
123 |
argp_parse (&argp, argc, argv, 0, &index, &data); |
argp_parse (&argp, argc, argv, 0, &index, &data); |
124 |
extra = index < argc; |
extra = index < argc; |
125 |
} |
} |