#include <sys/types.h>
#include <stdio.h>
#include <string.h>
+#include <stdarg.h>
+#include <errno.h>
#if STDC_HEADERS
# include <stdlib.h>
void *xrealloc (void *p, size_t n);
#endif
-#ifndef HAVE_DONE_WORKING_MALLOC_CHECK
-#error you must run the autoconf test for a properly working malloc -- see malloc.m4
-#endif
-
-#ifndef HAVE_DONE_WORKING_REALLOC_CHECK
-#error you must run the autoconf test for a properly working realloc -- see realloc.m4
-#endif
-
/* Exit value when the requested amount of memory is not available.
The caller may set it to some other value. */
int xalloc_exit_failure = EXIT_FAILURE;
}
#endif /* NOT_USED */
+
+int xasprintf(char **strp, const char *fmt, ...) {
+ int result;
+ va_list ap;
+ va_start(ap, fmt);
+ result = xvasprintf(strp, fmt, ap);
+ va_end(ap);
+ return result;
+}
+
+int xvasprintf(char **strp, const char *fmt, va_list ap) {
+ int result = vasprintf(strp, fmt, ap);
+ if(result < 0) {
+ fprintf(stderr, "vasprintf() failed: %s\n", strerror(errno));
+ exit(xalloc_exit_failure);
+ }
+ return result;
+}