a4ab2d2dfd0f2ae4d54dda1472ffe963ba1607de
[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 void init_log(const char *ident, int option, int facility);
20
21 NORETURN void fatal(const char *, ...);
22 NORETURN void fatalpe(const char *, ...);
23 NORETURN void badconf(const char *, ...);
24 NORETURN void deny(const char *, ...);
25 void error(const char *, ...);
26 void warn(const char *, ...);
27 void logmsg(const char *, ...);
28 void errorpe(const char *, ...);
29 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 char *xstrdup(const char *s) {
41     char *dup = strdup(s);
42
43     if (dup == NULL)
44         fatal("out of memory");
45
46     return dup;
47 }
48
49 #endif