Re: [PATCH v2 01/13] parse-options: stop when encounter a non-option
Bo Yang <struggleyb.nku@gmail.com> writes:
> Since we need to support the syntax like:
> -L n1,m1 path1 -L n2,m2 path2.
>
> So, make the parse-options API not stop with a
The above sentence does not parse well.
Show 47 quoted lines
> non-option, but report the status and go on parsing
> the following.
>
> Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
> Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
> ---
> parse-options.c | 3 ++-
> parse-options.h | 3 ++-
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/parse-options.c b/parse-options.c
> index 0fa79bc..cbb49d3 100644
> --- a/parse-options.c
> +++ b/parse-options.c
> @@ -374,7 +374,7 @@ int parse_options_step(struct parse_opt_ctx_t *ctx,
> if (parse_nodash_opt(ctx, arg, options) == 0)
> continue;
> if (ctx->flags & PARSE_OPT_STOP_AT_NON_OPTION)
> - break;
> + return PARSE_OPT_NON_OPTION;
> ctx->out[ctx->cpidx++] = ctx->argv[0];
> continue;
> }
> @@ -456,6 +456,7 @@ int parse_options(int argc, const char **argv, const char *prefix,
> switch (parse_options_step(&ctx, options, usagestr)) {
> case PARSE_OPT_HELP:
> exit(129);
> + case PARSE_OPT_NON_OPTION:
> case PARSE_OPT_DONE:
> break;
> default: /* PARSE_OPT_UNKNOWN */
> diff --git a/parse-options.h b/parse-options.h
> index 7435cdb..407697a 100644
> --- a/parse-options.h
> +++ b/parse-options.h
> @@ -161,7 +161,8 @@ extern NORETURN void usage_msg_opt(const char *msg,
> enum {
> PARSE_OPT_HELP = -1,
> PARSE_OPT_DONE,
> - PARSE_OPT_UNKNOWN
> + PARSE_OPT_NON_OPTION,
> + PARSE_OPT_UNKNOWN,
> };
>
> /*
> --
> 1.7.0.2.273.gc2413.dirty