From 3629934b0ae2f3ed8d2453dc2ed47ed652b90eca Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 30 Sep 2011 20:31:32 +0100 Subject: [PATCH] Check for PCRE version and disable PCRE_UCP for <= 8.10 --- common.mk | 4 ++++ src/regex.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/common.mk b/common.mk index 78033946..b8ceea3b 100644 --- a/common.mk +++ b/common.mk @@ -53,6 +53,10 @@ CPPFLAGS += -DI3_VERSION=\"${GIT_VERSION}\" CPPFLAGS += -DSYSCONFDIR=\"${SYSCONFDIR}\" CPPFLAGS += -DTERM_EMU=\"$(TERM_EMU)\" +ifeq ($(shell pkg-config --atleast-version=8.10 libpcre && echo 1),1) +CPPFLAGS += -DPCRE_HAS_UCP=1 +endif + LIBS += -lm LIBS += $(call ldflags_for_lib, xcb-event, xcb-event) LIBS += $(call ldflags_for_lib, xcb-keysyms, xcb-keysyms) diff --git a/src/regex.c b/src/regex.c index f419e4bb..64a2f3a4 100644 --- a/src/regex.c +++ b/src/regex.c @@ -25,9 +25,12 @@ struct regex *regex_new(const char *pattern) { struct regex *re = scalloc(sizeof(struct regex)); re->pattern = sstrdup(pattern); + int options = PCRE_UTF8; +#ifdef PCRE_HAS_UCP /* We use PCRE_UCP so that \B, \b, \D, \d, \S, \s, \W, \w and some POSIX * character classes play nicely with Unicode */ - int options = PCRE_UCP | PCRE_UTF8; + options |= PCRE_UCP; +#endif while (!(re->regex = pcre_compile2(pattern, options, &errorcode, &error, &offset, NULL))) { /* If the error is that PCRE was not compiled with UTF-8 support we * disable it and try again */ -- 2.39.2