1 /* x.c - Some wrappers for various functions to check and exit on out-of-memory
3 * Copyright © 2005 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 2, or (at your option)
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, write to the Free Software Foundation,
17 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 * Author: Carl Worth <carl@theworths.org>
27 xasprintf (char **strp, const char *fmt, ...)
32 xvasprintf (strp, fmt, ap);
37 xvasprintf (char **strp, const char *fmt, va_list ap)
41 ret = vasprintf (strp, fmt, ap);
44 fprintf (stderr, "Error: vasprintf failed: Out of memory? Aborting.\n");
50 xpipe (int filedes[2])
57 fprintf (stderr, "Error: pipe failed: %s. Aborting.\n", strerror (errno));
70 fprintf (stderr, "Error: fork failed: %s. Aborting.\n", strerror (errno));
85 fprintf (stderr, "Error: malloc failed. Out of memory. Aborting.\n");
93 xcalloc (size_t nmemb, size_t size)
97 ret = calloc (nmemb, size);
100 fprintf (stderr, "Error: calloc failed. Out of memory. Aborting.\n");
108 xrealloc (void *ptr, size_t size)
112 ret = realloc (ptr, size);
115 fprintf (stderr, "Error: realloc failed: Out of memory. Aborting.\n");
123 xfdopen (int filedes, const char *mode)
127 ret = fdopen (filedes, mode);
130 fprintf (stderr, "Error: fdopen failed: %s. Aborting.\n", strerror (errno));
138 xstrdup (const char *s)
145 fprintf (stderr, "Error: strdup failed: %s. Aborting.\n",
154 xfwrite (const void *ptr, size_t size, size_t nmemb, FILE *stream)
158 ret = fwrite (ptr, size, nmemb, stream);
160 fprintf (stderr, "Error: error occured during fwrite. Aborting.\n");