243e0614e0
When an option could be an ambiguous abbreviation of two options, the code used to error out. Even if an exact match would have occured later. Test and original patch by Pierre Habouzit. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
37 lines
967 B
C
37 lines
967 B
C
#include "cache.h"
|
|
#include "parse-options.h"
|
|
|
|
static int boolean = 0;
|
|
static int integer = 0;
|
|
static char *string = NULL;
|
|
|
|
int main(int argc, const char **argv)
|
|
{
|
|
const char *usage[] = {
|
|
"test-parse-options <options>",
|
|
NULL
|
|
};
|
|
struct option options[] = {
|
|
OPT_BOOLEAN('b', "boolean", &boolean, "get a boolean"),
|
|
OPT_INTEGER('i', "integer", &integer, "get a integer"),
|
|
OPT_INTEGER('j', NULL, &integer, "get a integer, too"),
|
|
OPT_GROUP("string options"),
|
|
OPT_STRING('s', "string", &string, "string", "get a string"),
|
|
OPT_STRING(0, "string2", &string, "str", "get another string"),
|
|
OPT_STRING(0, "st", &string, "st", "get another string (pervert ordering)"),
|
|
OPT_END(),
|
|
};
|
|
int i;
|
|
|
|
argc = parse_options(argc, argv, options, usage, 0);
|
|
|
|
printf("boolean: %d\n", boolean);
|
|
printf("integer: %d\n", integer);
|
|
printf("string: %s\n", string ? string : "(not set)");
|
|
|
|
for (i = 0; i < argc; i++)
|
|
printf("arg %02d: %s\n", i, argv[i]);
|
|
|
|
return 0;
|
|
}
|