From f7fbbc5428d601833168b1d6f60d7ef344f5cc88 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Sat, 5 Sep 2009 15:28:08 +0200 Subject: Add locale and multibyte support. Set LC_CTYPE to support locales. Use wchar_t to handle multibyte strings. Generate character tables for PCRE to support locales. --- regexset.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'regexset.c') diff --git a/regexset.c b/regexset.c index c816217..5e2d002 100644 --- a/regexset.c +++ b/regexset.c @@ -7,10 +7,12 @@ struct regexset_t *regexes; int rs_count; +const unsigned char *rs_pcre_tables; void rs_init() { regexes = NULL; rs_count = 0; + rs_pcre_tables = pcre_maketables(); } static void re_error(const char *name, const char *pattern, const char *error, int erroffset) { @@ -34,7 +36,7 @@ struct regexset_t *rs_add(const char *text, const char *join) { const char *error; int erroffset; - rs->text = pcre_compile(text, 0, &error, &erroffset, NULL); + rs->text = pcre_compile(text, 0, &error, &erroffset, rs_pcre_tables); if(rs->text == NULL) { re_error("text", text, error, erroffset); return NULL; @@ -43,7 +45,7 @@ struct regexset_t *rs_add(const char *text, const char *join) { /* Free compiled patterns from this point when failing. */ - rs->join = pcre_compile(join, 0, &error, &erroffset, NULL); + rs->join = pcre_compile(join, 0, &error, &erroffset, rs_pcre_tables); if(rs->join == NULL) { pcre_free(rs->text); if(rs->text_e) @@ -71,4 +73,6 @@ void rs_free() { } free(regexes); regexes = NULL; + pcre_free((void*)rs_pcre_tables); + rs_pcre_tables = NULL; } -- cgit v1.2.3