common: Avoid unnecessary ambiguity in argparse.

* common/argparse.c (find_long_option): Avoid unnecessary ambiguity.
--

If two struct ARGPARSE_OPTS share a prefix in their long_opt name, but
have the exact same short_opt and flags, they are aliases and not
distinct options.  Avoid reporting this as an ambiguity, so that (for
example) both --clearsign and --clear-sign can be invoked as --clear.

Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Debian-Bug-Id: 850475
This commit is contained in:
Daniel Kahn Gillmor 2017-01-10 15:59:36 -05:00
parent a20a450ac4
commit 7249ab0f95
1 changed files with 3 additions and 1 deletions

View File

@ -898,7 +898,9 @@ find_long_option( ARGPARSE_ARGS *arg,
int j;
for(j=i+1; opts[j].short_opt; j++ ) {
if( opts[j].long_opt
&& !strncmp( opts[j].long_opt, keyword, n ) )
&& !strncmp( opts[j].long_opt, keyword, n )
&& !(opts[j].short_opt == opts[i].short_opt
&& opts[j].flags == opts[i].flags ) )
return -2; /* abbreviation is ambiguous */
}
return i;