mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 09:24:54 +01:00
Add wrappers for regcomp and regexec to xutil.c.
These will be handy for some parsing.
This commit is contained in:
parent
22b2265cac
commit
d008389a4a
2 changed files with 46 additions and 0 deletions
39
xutil.c
39
xutil.c
|
@ -92,3 +92,42 @@ 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);
|
||||
fprintf (stderr, "Internal error compiling regex %s: %s\n",
|
||||
regex, error);
|
||||
free (error);
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
xregexec (const regex_t *preg, const char *string,
|
||||
size_t nmatch, regmatch_t pmatch[], int eflags)
|
||||
{
|
||||
int i, rerr;
|
||||
|
||||
rerr = regexec (preg, string, nmatch, pmatch, eflags);
|
||||
if (rerr)
|
||||
return rerr;
|
||||
|
||||
for (i = 0; i < nmatch; i++) {
|
||||
if (pmatch[i].rm_so == -1) {
|
||||
fprintf (stderr, "Internal error matching regex against %s: Sub-match %d not found\n",
|
||||
string, i);
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
7
xutil.h
7
xutil.h
|
@ -41,4 +41,11 @@ xstrdup (const char *s);
|
|||
char *
|
||||
xstrndup (const char *s, size_t n);
|
||||
|
||||
void
|
||||
xregcomp (regex_t *preg, const char *regex, int cflags);
|
||||
|
||||
int
|
||||
xregexec (const regex_t *preg, const char *string,
|
||||
size_t nmatch, regmatch_t pmatch[], int eflags);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue