mirror of
https://github.com/git/git
synced 2024-11-04 16:17:49 +00:00
parse-options: rearrange long_name matching code
Move the code for handling a full match of long_name first and get rid of negations. Reduce the indent of the code for matching abbreviations and remove unnecessary curly braces. Combine the checks for whether negation is allowed and whether arg is "n", "no" or "no-" because they belong together and avoid a continue statement. The result is shorter, more readable code. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b1ce2b62fa
commit
28a92478b8
1 changed files with 15 additions and 22 deletions
|
@ -413,31 +413,24 @@ static enum parse_opt_result parse_long_opt(
|
|||
if (((flags ^ opt_flags) & OPT_UNSET) && !allow_unset)
|
||||
continue;
|
||||
|
||||
if (!skip_prefix(arg_start, long_name, &rest))
|
||||
rest = NULL;
|
||||
if (!rest) {
|
||||
if (skip_prefix(arg_start, long_name, &rest)) {
|
||||
if (*rest == '=')
|
||||
p->opt = rest + 1;
|
||||
else if (*rest)
|
||||
continue;
|
||||
return get_value(p, options, flags ^ opt_flags);
|
||||
}
|
||||
|
||||
/* abbreviated? */
|
||||
if (!strncmp(long_name, arg_start, arg_end - arg_start)) {
|
||||
if (!strncmp(long_name, arg_start, arg_end - arg_start))
|
||||
register_abbrev(p, options, flags ^ opt_flags,
|
||||
&abbrev, &ambiguous);
|
||||
}
|
||||
/* negation allowed? */
|
||||
if (options->flags & PARSE_OPT_NONEG)
|
||||
continue;
|
||||
|
||||
/* negated and abbreviated very much? */
|
||||
if (starts_with("no-", arg)) {
|
||||
if (allow_unset && starts_with("no-", arg))
|
||||
register_abbrev(p, options, OPT_UNSET ^ opt_flags,
|
||||
&abbrev, &ambiguous);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (*rest) {
|
||||
if (*rest != '=')
|
||||
continue;
|
||||
p->opt = rest + 1;
|
||||
}
|
||||
return get_value(p, options, flags ^ opt_flags);
|
||||
}
|
||||
|
||||
if (disallow_abbreviated_options && (ambiguous.option || abbrev.option))
|
||||
die("disallowed abbreviated or ambiguous option '%.*s'",
|
||||
|
|
Loading…
Reference in a new issue