v7 addresses two comments from Junio and Eric in v6 and adds an extra
patch, 12/12, which reuses "icase" variable and avoids recalculating
the same thing (which can't be done before v6). Interdiff
diff --git a/grep.c b/grep.c
index aed4fe0..cb058a5 100644
--- a/grep.c
+++ b/grep.c
@@ -432,22 +432,20 @@ static void compile_regexp(struct grep_pat *p, struct
grep_opt *opt)
icase = opt->regflags & REG_ICASE || p->ignore_case;
ascii_only = !has_non_ascii(p->pattern);
- if ((!icase || ascii_only) && is_fixed(p->pattern, p->patternlen))
- p->fixed = 1;
- else if (opt->fixed) {
+ if (opt->fixed) {
p->fixed = !icase || ascii_only;
if (!p->fixed) {
compile_fixed_regexp(p, opt);
return;
}
- } else
+ } else if ((!icase || ascii_only) &&
+ is_fixed(p->pattern, p->patternlen))
+ p->fixed = 1;
+ else
p->fixed = 0;
if (p->fixed) {
- if (opt->regflags & REG_ICASE || p->ignore_case)
- p->kws = kwsalloc(tolower_trans_tbl);
- else
- p->kws = kwsalloc(NULL);
+ p->kws = kwsalloc(icase ? tolower_trans_tbl : NULL);
kwsincr(p->kws, p->pattern, p->patternlen);
kwsprep(p->kws);
return;
diff --git a/test-regex.c b/test-regex.c
index d1a952c..eff26f5 100644
--- a/test-regex.c
+++ b/test-regex.c
@@ -47,8 +47,8 @@ int main(int argc, char **argv)
if (argc == 2 && !strcmp(argv[1], "--bug"))
return test_regex_bug();
else if (argc < 3)
- die("usage: test-regex --bug\n"
- " test-regex <pattern> <string> [<options>]");
+ usage("test-regex --bug\n"
+ "test-regex <pattern> <string> [<options>]");
argv++;
pat = *argv++;
Nguyễn Thái Ngọc Duy (12):
grep: allow -F -i combination
grep: break down an "if" stmt in preparation for next changes
test-regex: isolate the bug test code
test-regex: expose full regcomp() to the command line
grep/icase: avoid kwsset on literal non-ascii strings
grep/icase: avoid kwsset when -F is specified
grep/pcre: prepare locale-dependent tables for icase matching
gettext: add is_utf8_locale()
grep/pcre: support utf-8
diffcore-pickaxe: "share" regex error handling code
diffcore-pickaxe: support case insensitive match on non-ascii
grep.c: reuse "icase" variable
builtin/grep.c | 2 +-
diffcore-pickaxe.c | 27 ++++++++----
gettext.c | 24 ++++++++++-
gettext.h | 1 +
grep.c | 47 +++++++++++++++++----
grep.h | 1 +
quote.c | 37 +++++++++++++++++
quote.h | 1 +
t/t0070-fundamental.sh | 2 +-
t/t7812-grep-icase-non-ascii.sh (new +x) | 71 ++++++++++++++++++++++++++++++++
t/t7813-grep-icase-iso.sh (new +x) | 19 +++++++++
test-regex.c | 59 +++++++++++++++++++++++++-
12 files changed, 270 insertions(+), 21 deletions(-)
create mode 100755 t/t7812-grep-icase-non-ascii.sh
create mode 100755 t/t7813-grep-icase-iso.sh
--
2.7.0.377.g4cd97dd
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html