#include "config.h"
#include "string/sprintf/xaprintf.h"
-
-#include <stdarg.h>
-
-
-extern inline char *xaprintf(const char *restrict fmt, ...);
-extern inline char *xvaprintf(const char *restrict fmt, va_list ap);
#include "config.h"
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "attr.h"
#include "string/sprintf/aprintf.h"
-
-
-ATTR_MALLOC(free)
-format_attr(printf, 1, 2)
-inline char *xaprintf(const char *restrict fmt, ...);
-
-ATTR_MALLOC(free)
-format_attr(printf, 1, 0)
-inline char *xvaprintf(const char *restrict fmt, va_list ap);
+#include "exit_if_null.h"
// exit-on-error allocate print formatted
-inline char *
-xaprintf(const char *restrict fmt, ...)
-{
- char *p;
- va_list ap;
-
- va_start(ap, fmt);
- p = xvaprintf(fmt, ap);
- va_end(ap);
-
- return p;
-}
-
-
-inline char *
-xvaprintf(const char *restrict fmt, va_list ap)
-{
- char *p;
-
- p = vaprintf(fmt, ap);
- if (p == NULL) {
- perror("vaprintf");
- exit(EXIT_FAILURE);
- }
-
- return p;
-}
+#define xaprintf(...) exit_if_null(aprintf(__VA_ARGS__))
#endif // include guard
$(NULL)
test_xaprintf_SOURCES = \
+ ../../lib/exit_if_null.c \
+ ../../lib/shadowlog.c \
../../lib/string/sprintf/aprintf.c \
../../lib/string/sprintf/xaprintf.c \
../../lib/string/strcmp/streq.c \