parse-options: do not infer PARSE_OPT_NOARG from option type
Simplify the "takes no value" error path by relying on PARSE_OPT_NOARG being set correctly. That is: - if the PARSE_OPT_NOARG flag is set, reject --opt=value regardless of the option type; - if the PARSE_OPT_NOARG flag is unset, accept --opt=value regardless of the option type. This way, the accepted usage more closely matches the usage advertised with --help-all. No functional change intended, since the NOARG flag is only used with "boolean-only" option types in existing parse_options callers. Signed-off-by: Stephen Boyd <bebarino@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
5c400ed2e0
commit
c1f4ec9ef4
|
@ -62,23 +62,8 @@ static int get_value(struct parse_opt_ctx_t *p,
|
||||||
return opterror(opt, "takes no value", flags);
|
return opterror(opt, "takes no value", flags);
|
||||||
if (unset && (opt->flags & PARSE_OPT_NONEG))
|
if (unset && (opt->flags & PARSE_OPT_NONEG))
|
||||||
return opterror(opt, "isn't available", flags);
|
return opterror(opt, "isn't available", flags);
|
||||||
|
if (!(flags & OPT_SHORT) && p->opt && (opt->flags & PARSE_OPT_NOARG))
|
||||||
if (!(flags & OPT_SHORT) && p->opt) {
|
|
||||||
switch (opt->type) {
|
|
||||||
case OPTION_CALLBACK:
|
|
||||||
if (!(opt->flags & PARSE_OPT_NOARG))
|
|
||||||
break;
|
|
||||||
/* FALLTHROUGH */
|
|
||||||
case OPTION_BOOLEAN:
|
|
||||||
case OPTION_BIT:
|
|
||||||
case OPTION_NEGBIT:
|
|
||||||
case OPTION_SET_INT:
|
|
||||||
case OPTION_SET_PTR:
|
|
||||||
return opterror(opt, "takes no value", flags);
|
return opterror(opt, "takes no value", flags);
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (opt->type) {
|
switch (opt->type) {
|
||||||
case OPTION_BIT:
|
case OPTION_BIT:
|
||||||
|
|
Loading…
Reference in New Issue