From: Uwe Kleine-König Date: Tue, 6 Jul 2010 14:46:05 +0000 (+0200) Subject: rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option X-Git-Tag: v1.7.2-rc2~2^2~1^2 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=29981380d03ffa63765dbeaea53a7ac9e8d6bc4f;p=git.git rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option The ?: operator has a lower priority than |, so the implicit associativity made the 6th argument of parse_options be PARSE_OPT_KEEP_DASHDASH if keep_dashdash was true discarding PARSE_OPT_STOP_AT_NON_OPTION and PARSE_OPT_SHELL_EVAL. Signed-off-by: Uwe Kleine-König Signed-off-by: Junio C Hamano --- diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c index 45bead654..b58531209 100644 --- a/builtin-rev-parse.c +++ b/builtin-rev-parse.c @@ -397,8 +397,8 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix) ALLOC_GROW(opts, onb + 1, osz); memset(opts + onb, 0, sizeof(opts[onb])); argc = parse_options(argc, argv, prefix, opts, usage, - keep_dashdash ? PARSE_OPT_KEEP_DASHDASH : 0 | - stop_at_non_option ? PARSE_OPT_STOP_AT_NON_OPTION : 0); + (keep_dashdash ? PARSE_OPT_KEEP_DASHDASH : 0) | + (stop_at_non_option ? PARSE_OPT_STOP_AT_NON_OPTION : 0)); strbuf_addf(&parsed, " --"); sq_quote_argv(&parsed, argv, 0); diff --git a/t/t1502-rev-parse-parseopt.sh b/t/t1502-rev-parse-parseopt.sh index e50405806..3b612c67b 100755 --- a/t/t1502-rev-parse-parseopt.sh +++ b/t/t1502-rev-parse-parseopt.sh @@ -79,4 +79,22 @@ test_expect_success 'test --parseopt --keep-dashdash' ' test_cmp expect output ' +cat >expect <output && + test_cmp expect output +' + +cat > expect <output && + test_cmp expect output +' + test_done