diff options
-rw-r--r-- | builtin/rev-parse.c | 6 | ||||
-rwxr-xr-x | t/t1502-rev-parse-parseopt.sh | 4 |
2 files changed, 6 insertions, 4 deletions
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index c78b7b33d..1cd55a2bd 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -434,7 +434,7 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix) /* parse: (<short>|<short>,<long>|<long>)[*=?!]*<arghint>? SP+ <help> */ while (strbuf_getline(&sb, stdin) != EOF) { const char *s; - const char *help; + char *help; struct option *o; if (!sb.len) @@ -451,8 +451,10 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix) continue; } + *help = '\0'; + o->type = OPTION_CALLBACK; - o->help = xstrdup(skipspaces(help)); + o->help = xstrdup(skipspaces(help+1)); o->value = &parsed; o->flags = PARSE_OPT_NOARG; o->callback = &parseopt_dump; diff --git a/t/t1502-rev-parse-parseopt.sh b/t/t1502-rev-parse-parseopt.sh index 910fc56ae..3d895e056 100755 --- a/t/t1502-rev-parse-parseopt.sh +++ b/t/t1502-rev-parse-parseopt.sh @@ -85,12 +85,12 @@ set -- --foo --bar 'ham' -b --aswitch -- 'arg' EOF " -test_expect_failure 'test --parseopt' ' +test_expect_success 'test --parseopt' ' git rev-parse --parseopt -- --foo --bar=ham --baz --aswitch arg < optionspec > output && test_cmp expect output ' -test_expect_failure 'test --parseopt with mixed options and arguments' ' +test_expect_success 'test --parseopt with mixed options and arguments' ' git rev-parse --parseopt -- --foo arg --bar=ham --baz --aswitch < optionspec > output && test_cmp expect output ' |