1 /* xutil.c - Various wrapper functions to abort on error.
3 * Copyright © 2009 Carl Worth
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see http://www.gnu.org/licenses/ .
18 * Author: Carl Worth <cworth@cworth.org>
21 #define _GNU_SOURCE /* For strndup */
22 #include "notmuch-private.h"
27 xcalloc (size_t nmemb, size_t size)
31 ret = calloc (nmemb, size);
33 fprintf (stderr, "Out of memory.\n");
47 fprintf (stderr, "Out of memory.\n");
55 xrealloc (void *ptr, size_t size)
59 ret = realloc (ptr, size);
61 fprintf (stderr, "Out of memory.\n");
69 xstrdup (const char *s)
75 fprintf (stderr, "Out of memory.\n");
83 xstrndup (const char *s, size_t n)
89 fprintf (stderr, "Out of memory.\n");
97 xregcomp (regex_t *preg, const char *regex, int cflags)
101 rerr = regcomp (preg, regex, cflags);
103 size_t error_size = regerror (rerr, preg, NULL, 0);
104 char *error = xmalloc (error_size);
106 regerror (rerr, preg, error, error_size);
107 INTERNAL_ERROR ("compiling regex %s: %s\n",
113 xregexec (const regex_t *preg, const char *string,
114 size_t nmatch, regmatch_t pmatch[], int eflags)
119 rerr = regexec (preg, string, nmatch, pmatch, eflags);
123 for (i = 0; i < nmatch; i++) {
124 if (pmatch[i].rm_so == -1)
125 INTERNAL_ERROR ("matching regex against %s: Sub-match %d not found\n",