Check for PCRE version and disable PCRE_UCP for <= 8.10

next
Michael Stapelberg 2011-09-30 20:31:32 +01:00
parent c0d198bbc9
commit 3629934b0a
2 changed files with 8 additions and 1 deletions

View File

@ -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)

View File

@ -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 */