grep: fix -Fi
authorIan Wienand <ianw@vmware.com>
Fri, 30 Apr 2010 07:32:10 +0000 (09:32 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 30 Apr 2010 07:32:10 +0000 (09:32 +0200)
function                                             old     new   delta
grep_file                                           1151    1169     +18

Signed-off-by: Ian Wienand <ianw@vmware.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
findutils/grep.c
testsuite/grep.tests

index 40caef4..0f1c11a 100644 (file)
@@ -254,7 +254,10 @@ static int grep_file(FILE *file)
                while (pattern_ptr) {
                        gl = (grep_list_data_t *)pattern_ptr->data;
                        if (FGREP_FLAG) {
-                               found |= (strstr(line, gl->pattern) != NULL);
+                               found |= (((option_mask32 & OPT_i)
+                                       ? strcasestr(line, gl->pattern)
+                                       : strstr(line, gl->pattern)
+                                       ) != NULL);
                        } else {
                                if (!(gl->flg_mem_alocated_compiled & COMPILED)) {
                                        gl->flg_mem_alocated_compiled |= COMPILED;
index 8692307..d4bf80d 100755 (executable)
@@ -75,6 +75,8 @@ testing "grep handles multiple regexps" "grep -e one -e two input ; echo \$?" \
        "one\ntwo\n0\n" "one\ntwo\n" ""
 testing "grep -F handles multiple expessions" "grep -F -e one -e two input ; echo \$?" \
        "one\ntwo\n0\n" "one\ntwo\n" ""
+testing "grep -F handles -i" "grep -F -i foo input ; echo \$?" \
+       "FOO\n0\n" "FOO\n" ""
 
 # -f file/-
 testing "grep can read regexps from stdin" "grep -f - input ; echo \$?" \