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>
25 #include "error_util.h"
28 xcalloc (size_t nmemb, size_t size)
32 ret = calloc (nmemb, size);
34 fprintf (stderr, "Out of memory.\n");
48 fprintf (stderr, "Out of memory.\n");
56 xrealloc (void *ptr, size_t size)
60 ret = realloc (ptr, size);
62 fprintf (stderr, "Out of memory.\n");
70 xstrdup (const char *s)
76 fprintf (stderr, "Out of memory.\n");
84 xstrndup (const char *s, size_t n)
93 fprintf (stderr, "Out of memory.\n");
103 xregcomp (regex_t *preg, const char *regex, int cflags)
107 rerr = regcomp (preg, regex, cflags);
109 size_t error_size = regerror (rerr, preg, NULL, 0);
110 char *error = xmalloc (error_size);
112 regerror (rerr, preg, error, error_size);
113 fprintf (stderr, "compiling regex %s: %s\n",
122 xregexec (const regex_t *preg, const char *string,
123 size_t nmatch, regmatch_t pmatch[], int eflags)
128 rerr = regexec (preg, string, nmatch, pmatch, eflags);
132 for (i = 0; i < nmatch; i++) {
133 if (pmatch[i].rm_so == -1)
134 INTERNAL_ERROR ("matching regex against %s: Sub-match %d not found\n",