Thread (12 messages) flat view 12 messages, 3 authors, 2022-02-17

Re: [PATCH 2/2] grep/pcre2: factor out literal variable

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-12-19 19:39:06

On Sat, Dec 18 2021, René Scharfe wrote:
quoted hunk ↗ jump to hunk
Patterns that contain no wildcards and don't have to be case-folded are
literal.  Give this condition a name to increase the readability of the
boolean expression for enabling the option PCRE2_UTF.

Signed-off-by: René Scharfe <redacted>
---
 grep.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/grep.c b/grep.c
index 5badb6d851..2b6ac3205d 100644
--- a/grep.c
+++ b/grep.c
@@ -362,6 +362,7 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
 	int jitret;
 	int patinforet;
 	size_t jitsizearg;
+	int literal = !opt->ignore_case && (p->fixed || p->is_fixed);

 	/*
 	 * Call pcre2_general_context_create() before calling any
@@ -382,8 +383,7 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
 		}
 		options |= PCRE2_CASELESS;
 	}
-	if (!opt->ignore_locale && is_utf8_locale() &&
-	    !(!opt->ignore_case && (p->fixed || p->is_fixed)))
+	if (!opt->ignore_locale && is_utf8_locale() && !literal)
 		options |= (PCRE2_UTF | PCRE2_MATCH_INVALID_UTF);

 #ifdef GIT_PCRE2_VERSION_10_36_OR_HIGHER
I think for this and 1/2 it would be really nice to pick up a version of
Hamza's CI changes:
https://lore.kernel.org/git/20211118084143.279174-2-someguy@effective-light.com/ (local)

Aside: Not needed for this change, but I wonder if we could benefit minutely
from:

    #ifdef PCRE2_LITERAL
    options |= PCRE2_LITERAL;
    #endif

It'll save PCRE2 the small effort of finding that we've got no metacharacters.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help