bd01b11df3562d388bdb6eb934851a6413bf6f8b
[public/pyceo-broken.git] / src / util.h
1 #ifndef CEO_UTIL_H
2 #define CEO_UTIL_H
3
4 #include <stdlib.h>
5 #include <string.h>
6 #include <stdarg.h>
7
8 #ifdef __GNUC__
9 #define NORETURN __attribute__((__noreturn__))
10 #else
11 #define NORETURN
12 #endif
13
14 #ifndef LOG_AUTHPRIV
15 #define LOG_AUTHPRIV LOG_AUTH
16 #endif
17
18 int spawnv(const char *, char *[]);
19
20 NORETURN void fatal(const char *, ...);
21 NORETURN void fatalpe(const char *, ...);
22 NORETURN void badconf(const char *, ...);
23 NORETURN void deny(const char *, ...);
24 void error(const char *, ...);
25 void warn(const char *, ...);
26 void logmsg(const char *, ...);
27 void errorpe(const char *, ...);
28 void warnpe(const char *, ...);
29
30 static inline void *xmalloc(size_t size) {
31     void *alloc = malloc(size);
32
33     if (alloc == NULL)
34         fatal("out of memory");
35
36     return alloc;
37 }
38
39 static inline char *xstrdup(const char *s) {
40     char *dup = strdup(s);
41
42     if (dup == NULL)
43         fatal("out of memory");
44
45     return dup;
46 }
47
48 #endif