summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pcresearch.c4
-rwxr-xr-xtests/pcre-utf82
-rwxr-xr-xtests/pcre-utf8-w5
3 files changed, 8 insertions, 3 deletions
diff --git a/src/pcresearch.c b/src/pcresearch.c
index 45b67eed..a8034fbc 100644
--- a/src/pcresearch.c
+++ b/src/pcresearch.c
@@ -145,7 +145,9 @@ Pcompile (char *pattern, idx_t size, reg_syntax_t ignored, bool exact)
= pcre2_general_context_create (private_malloc, private_free, NULL);
pcre2_compile_context *ccontext = pcre2_compile_context_create (gcontext);
- if (localeinfo.multibyte)
+ uint32_t unicode = 1;
+ pcre2_config (PCRE2_CONFIG_UNICODE, &unicode);
+ if (unicode && localeinfo.multibyte)
{
if (! localeinfo.using_utf8)
die (EXIT_TROUBLE, 0, _("-P supports only unibyte and UTF-8 locales"));
diff --git a/tests/pcre-utf8 b/tests/pcre-utf8
index 1b3b2d3b..4d97e69c 100755
--- a/tests/pcre-utf8
+++ b/tests/pcre-utf8
@@ -14,7 +14,7 @@ LC_ALL=en_US.UTF-8 require_pcre_
fail=0
echo '$' | LC_ALL=en_US.UTF-8 grep -qP '\p{S}' \
- || skip_ 'PCRE support is compiled out, or it does not support properties'
+ || skip_ 'PCRE unicode support is compiled out'
euro='\342\202\254 euro'
printf "$euro\\n" > in || framework_failure_
diff --git a/tests/pcre-utf8-w b/tests/pcre-utf8-w
index 4cd7db69..81ac9ff8 100755
--- a/tests/pcre-utf8-w
+++ b/tests/pcre-utf8-w
@@ -13,9 +13,12 @@ LC_ALL=en_US.UTF-8
export LC_ALL
require_pcre_
+echo . | grep -qP '(*UTF).' 2>/dev/null \
+ || skip_ 'PCRE unicode support is compiled out'
+
fail=0
-echo 'Perú'> in || framework_failure_
+echo 'Perú' > in || framework_failure_
echo 'ú' > exp || framework_failure_
grep -Po '.\b' in > out || fail=1