parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION
Introduce a PARSE_OPT_NON_OPTION state, so parse_option_step() callers can easily distinguish between non-options and other reasons for option parsing termination (like "--"). Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b0b3a8b666
commit
979240fee3
@ -373,7 +373,7 @@ int parse_options_step(struct parse_opt_ctx_t *ctx,
|
|||||||
if (parse_nodash_opt(ctx, arg, options) == 0)
|
if (parse_nodash_opt(ctx, arg, options) == 0)
|
||||||
continue;
|
continue;
|
||||||
if (ctx->flags & PARSE_OPT_STOP_AT_NON_OPTION)
|
if (ctx->flags & PARSE_OPT_STOP_AT_NON_OPTION)
|
||||||
break;
|
return PARSE_OPT_NON_OPTION;
|
||||||
ctx->out[ctx->cpidx++] = ctx->argv[0];
|
ctx->out[ctx->cpidx++] = ctx->argv[0];
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -455,6 +455,7 @@ int parse_options(int argc, const char **argv, const char *prefix,
|
|||||||
switch (parse_options_step(&ctx, options, usagestr)) {
|
switch (parse_options_step(&ctx, options, usagestr)) {
|
||||||
case PARSE_OPT_HELP:
|
case PARSE_OPT_HELP:
|
||||||
exit(129);
|
exit(129);
|
||||||
|
case PARSE_OPT_NON_OPTION:
|
||||||
case PARSE_OPT_DONE:
|
case PARSE_OPT_DONE:
|
||||||
break;
|
break;
|
||||||
default: /* PARSE_OPT_UNKNOWN */
|
default: /* PARSE_OPT_UNKNOWN */
|
||||||
|
@ -167,6 +167,7 @@ extern NORETURN void usage_msg_opt(const char *msg,
|
|||||||
enum {
|
enum {
|
||||||
PARSE_OPT_HELP = -1,
|
PARSE_OPT_HELP = -1,
|
||||||
PARSE_OPT_DONE,
|
PARSE_OPT_DONE,
|
||||||
|
PARSE_OPT_NON_OPTION,
|
||||||
PARSE_OPT_UNKNOWN
|
PARSE_OPT_UNKNOWN
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user