Rename macros to profiles
[mspang/inapt.git] / util.h
1 #ifndef CEO_UTIL_H
2 #define CEO_UTIL_H
3
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <string.h>
7 #include <stdarg.h>
8 #include <syslog.h>
9 #include <sys/types.h>
10 #include <dirent.h>
11
12 #ifdef __GNUC__
13 #define NORETURN __attribute__((__noreturn__))
14 #define PRINTF_LIKE(extra) __attribute__((format(printf, extra+1, extra+2)))
15 #else
16 #define NORETURN
17 #define PRINTF_LIKE(extra)
18 #endif
19
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(0) void errorpe(const char *, ...);
29 PRINTF_LIKE(0) void warnpe(const char *, ...);
30
31 static inline void *xmalloc(size_t size) {
32     void *alloc = malloc(size);
33
34     if (alloc == NULL)
35         fatal("out of memory");
36
37     return alloc;
38 }
39
40 static inline void *xrealloc(void *ptr, size_t size) {
41     void *alloc = realloc(ptr, size);
42
43     if (alloc == NULL)
44         fatal("out of memory");
45
46     return alloc;
47 }
48
49 static inline void *xcalloc(size_t nmemb, size_t size) {
50     void *alloc = calloc(nmemb, size);
51
52     if (alloc == NULL)
53         fatal("out of memory");
54
55     return alloc;
56 }
57
58 static inline char *xstrdup(const char *s) {
59     char *dup = strdup(s);
60
61     if (dup == NULL)
62         fatal("out of memory");
63
64     return dup;
65 }
66
67 static inline char *xstrndup(const char *s, size_t n) {
68     char *dup = strndup(s, n);
69
70     if (dup == NULL)
71         fatal("out of memory");
72
73     return dup;
74 }
75
76 #endif