X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=xutil.c;h=6fa5eb0ddb49dfb12dcd0cf039d4165cd8f6f7cb;hp=7ee7a698f3c7142e1cab717eeaa930ced6fd18ad;hb=884ac59256d19db5ee25d976a4f5e60cce51d7d5;hpb=10c176ba0e6d71e920b72a3165c0e56f26b5e4b3 diff --git a/xutil.c b/xutil.c index 7ee7a698..6fa5eb0d 100644 --- a/xutil.c +++ b/xutil.c @@ -92,3 +92,39 @@ xstrndup (const char *s, size_t n) return ret; } + +void +xregcomp (regex_t *preg, const char *regex, int cflags) +{ + int rerr; + + rerr = regcomp (preg, regex, cflags); + if (rerr) { + size_t error_size = regerror (rerr, preg, NULL, 0); + char *error = xmalloc (error_size); + + regerror (rerr, preg, error, error_size); + INTERNAL_ERROR ("compiling regex %s: %s\n", + regex, error); + } +} + +int +xregexec (const regex_t *preg, const char *string, + size_t nmatch, regmatch_t pmatch[], int eflags) +{ + unsigned int i; + int rerr; + + rerr = regexec (preg, string, nmatch, pmatch, eflags); + if (rerr) + return rerr; + + for (i = 0; i < nmatch; i++) { + if (pmatch[i].rm_so == -1) + INTERNAL_ERROR ("matching regex against %s: Sub-match %d not found\n", + string, i); + } + + return 0; +}