pickaxe: honor -i when used with -S and --pickaxe-regex
authorRené Scharfe <l.s.r@web.de>
Sat, 22 Mar 2014 17:15:56 +0000 (18:15 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 24 Mar 2014 22:12:45 +0000 (15:12 -0700)
accccde4 (pickaxe: allow -i to search in patch case-insensitively)
allowed case-insenitive matching for -G and -S, but for the latter
only if fixed string matching is used. Allow it for -S and regular
expression matching as well to make the support complete.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diffcore-pickaxe.c
t/t4209-log-pickaxe.sh
index 401eb72c619d432c92fc66b470fae778117bcace..cb758515ec16fba08da03da0d7bb6aee1ee41193 100644 (file)
@@ -237,7 +237,10 @@ static void diffcore_pickaxe_count(struct diff_options *o)
 
        if (opts & DIFF_PICKAXE_REGEX) {
                int err;
-               err = regcomp(&regex, needle, REG_EXTENDED | REG_NEWLINE);
+               int cflags = REG_EXTENDED | REG_NEWLINE;
+               if (DIFF_OPT_TST(o, PICKAXE_IGNORE_CASE))
+                       cflags |= REG_ICASE;
+               err = regcomp(&regex, needle, cflags);
                if (err) {
                        /* The POSIX.2 people are surely sick */
                        char errbuf[1024];
index 138118add1ee07dbcf43f906afbdf10a208f3aa7..844df760f7d1c2b1b25eb01fada039efd0354711 100755 (executable)
@@ -88,6 +88,11 @@ test_log     expect_second   -S Picked
 test_log_icase expect_second   -S picked
 test_log_icase expect_nomatch  -S pickle
 
+test_log       expect_nomatch  -S p.cked --pickaxe-regex
+test_log       expect_second   -S P.cked --pickaxe-regex
+test_log_icase expect_second   -S p.cked --pickaxe-regex
+test_log_icase expect_nomatch  -S p.ckle --pickaxe-regex
+
 test_expect_success 'log -S --textconv (missing textconv tool)' '
        echo "* diff=test" >.gitattributes &&
        test_must_fail git -c diff.test.textconv=missing log -Sfoo &&