diff options
author | Stephen Boyd <bebarino@gmail.com> | 2010-12-01 17:30:40 -0600 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-12-07 14:19:32 -0800 |
commit | c1f4ec9ef45232d6dbdea4c417a9d41eb8ad7f4f (patch) | |
tree | da050b7810cb8f2a51e5e4830667fc2870f2f95e | |
parent | 5c400ed2e05070d79b6cd9438ff5607ec0a83589 (diff) | |
download | git-c1f4ec9ef45232d6dbdea4c417a9d41eb8ad7f4f.tar.gz |
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>
-rw-r--r-- | parse-options.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/parse-options.c b/parse-options.c index 79c56f32f9..578035671a 100644 --- a/parse-options.c +++ b/parse-options.c @@ -62,23 +62,8 @@ static int get_value(struct parse_opt_ctx_t *p, return opterror(opt, "takes no value", flags); if (unset && (opt->flags & PARSE_OPT_NONEG)) return opterror(opt, "isn't available", flags); - - 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); - default: - break; - } - } + if (!(flags & OPT_SHORT) && p->opt && (opt->flags & PARSE_OPT_NOARG)) + return opterror(opt, "takes no value", flags); switch (opt->type) { case OPTION_BIT: |