From a326b5fbfcb3ae547001dcc051272ae88cebcc7d Mon Sep 17 00:00:00 2001 From: Norihiro Tanaka Date: Tue, 6 May 2014 16:00:34 +0900 Subject: [PATCH] grep: always convert fgrep to grep src/grep.c (main): Do it. --- src/grep.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/grep.c b/src/grep.c index a661fc0..35f4c75 100644 --- a/src/grep.c +++ b/src/grep.c @@ -2336,18 +2336,22 @@ main (int argc, char **argv) /* If fgrep in a multibyte locale, then use grep if either (1) case is ignored (where grep is typically faster), or (2) the pattern has an encoding error (where fgrep might not work). */ - if (compile == Fcompile && MB_CUR_MAX > 1 - && (match_icase || contains_encoding_error (keys, keycc))) + if (compile == Fcompile) { - size_t new_keycc; - char *new_keys; - fgrep_to_grep_pattern (keycc, keys, &new_keycc, &new_keys); - free (keys); - keys = new_keys; - keycc = new_keycc; - matcher = "grep"; - compile = Gcompile; - execute = EGexecute; + if (!getenv ("FGREP_NO_DFA")) + { + size_t new_keycc; + char *new_keys; + fgrep_to_grep_pattern (keycc, keys, &new_keycc, &new_keys); + free (keys); + keys = new_keys; + keycc = new_keycc; + matcher = "grep"; + compile = Gcompile; + execute = EGexecute; + } + else if (contains_encoding_error (keys, keycc)) + error (EXIT_TROUBLE, 0, _("contains encoding error")); } if (MB_CUR_MAX > 1) -- 1.9.2