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 #include "notmuch-private.h"
26 xcalloc (size_t nmemb, size_t size)
30 ret = calloc (nmemb, size);
32 fprintf (stderr, "Out of memory.\n");
46 fprintf (stderr, "Out of memory.\n");
54 xrealloc (void *ptr, size_t size)
58 ret = realloc (ptr, size);
60 fprintf (stderr, "Out of memory.\n");
68 xstrdup (const char *s)
74 fprintf (stderr, "Out of memory.\n");
82 xstrndup (const char *s, size_t n)
91 fprintf (stderr, "Out of memory.\n");
101 xregcomp (regex_t *preg, const char *regex, int cflags)
105 rerr = regcomp (preg, regex, cflags);
107 size_t error_size = regerror (rerr, preg, NULL, 0);
108 char *error = xmalloc (error_size);
110 regerror (rerr, preg, error, error_size);
111 INTERNAL_ERROR ("compiling regex %s: %s\n",
117 xregexec (const regex_t *preg, const char *string,
118 size_t nmatch, regmatch_t pmatch[], int eflags)
123 rerr = regexec (preg, string, nmatch, pmatch, eflags);
127 for (i = 0; i < nmatch; i++) {
128 if (pmatch[i].rm_so == -1)
129 INTERNAL_ERROR ("matching regex against %s: Sub-match %d not found\n",