13 #define NORETURN __attribute__((__noreturn__))
14 #define PRINTF_LIKE(extra) __attribute__((format(printf, extra+1, extra+2)))
17 #define PRINTF_LIKE(extra)
20 PRINTF_LIKE(0) NORETURN void fatal(const char *, ...);
21 PRINTF_LIKE(0) NORETURN void fatalpe(const char *, ...);
22 PRINTF_LIKE(0) NORETURN void badconf(const char *, ...);
23 PRINTF_LIKE(0) NORETURN void deny(const char *, ...);
24 PRINTF_LIKE(0) void error(const char *, ...);
25 PRINTF_LIKE(0) void warn(const char *, ...);
26 PRINTF_LIKE(0) void notice(const char *, ...);
27 PRINTF_LIKE(0) void debug(const char *, ...);
28 PRINTF_LIKE(1) void debugn(int level, const char *, ...);
29 PRINTF_LIKE(0) void errorpe(const char *, ...);
30 PRINTF_LIKE(0) void warnpe(const char *, ...);
32 static inline void *xmalloc(size_t size) {
33 void *alloc = malloc(size);
36 fatal("out of memory");
41 static inline void *xrealloc(void *ptr, size_t size) {
42 void *alloc = realloc(ptr, size);
45 fatal("out of memory");
50 static inline void *xcalloc(size_t nmemb, size_t size) {
51 void *alloc = calloc(nmemb, size);
54 fatal("out of memory");
59 static inline char *xstrdup(const char *s) {
60 char *dup = strdup(s);
63 fatal("out of memory");
68 static inline char *xstrndup(const char *s, size_t n) {
69 char *dup = strndup(s, n);
72 fatal("out of memory");
77 extern int debug_level;