Stop building the DFA image automatically
[mspang/inapt.git] / util.cc
1 #include <unistd.h>
2 #include <sys/wait.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <stdarg.h>
6 #include <fcntl.h>
7 #include <syslog.h>
8 #include <errno.h>
9 #include <grp.h>
10 #include <pwd.h>
11
12 #include "util.h"
13
14 static void errmsg(int prio, const char *prefix, const char *fmt, va_list args) {
15     fprintf(stderr, "%s: ", prefix);
16     vfprintf(stderr, fmt, args);
17     fprintf(stderr, "\n");
18 }
19
20 static void errmsgpe(int prio, const char *prefix, const char *fmt, va_list args) {
21     fprintf(stderr, "%s: ", prefix);
22     vfprintf(stderr, fmt, args);
23     fprintf(stderr, ": %s\n", strerror(errno));
24 }
25
26 NORETURN static void die(int prio, const char *prefix, const char *msg, va_list args) {
27     errmsg(prio, prefix, msg, args);
28     exit(1);
29 }
30
31 NORETURN static void diepe(int prio, const char *prefix, const char *msg, va_list args) {
32     errmsgpe(prio, prefix, msg, args);
33     exit(1);
34 }
35
36 NORETURN void fatal(const char *msg, ...) {
37     va_list args;
38     va_start(args, msg);
39     die(LOG_CRIT, "fatal", msg, args);
40     va_end(args);
41 }
42
43 void error(const char *msg, ...) {
44     va_list args;
45     va_start(args, msg);
46     errmsg(LOG_ERR, "error", msg, args);
47     va_end(args);
48 }
49
50 void warn(const char *msg, ...) {
51     va_list args;
52     va_start(args, msg);
53     errmsg(LOG_WARNING, "warning", msg, args);
54     va_end(args);
55 }
56
57 void notice(const char *msg, ...) {
58     va_list args;
59     va_start(args, msg);
60     errmsg(LOG_NOTICE, "notice", msg, args);
61     va_end(args);
62 }
63
64 void debug(const char *msg, ...) {
65     va_list args;
66     va_start(args, msg);
67     errmsg(LOG_DEBUG, "debug", msg, args);
68     va_end(args);
69 }
70
71 NORETURN void deny(const char *msg, ...) {
72     va_list args;
73     va_start(args, msg);
74     die(LOG_ERR, "denied", msg, args);
75     va_end(args);
76 }
77
78 NORETURN void badconf(const char *msg, ...) {
79     va_list args;
80     va_start(args, msg);
81     die(LOG_CRIT, "configuration error", msg, args);
82     va_end(args);
83 }
84
85 NORETURN void fatalpe(const char *msg, ...) {
86     va_list args;
87     va_start(args, msg);
88     diepe(LOG_CRIT, "fatal", msg, args);
89     va_end(args);
90 }
91
92 void errorpe(const char *msg, ...) {
93     va_list args;
94     va_start(args, msg);
95     errmsgpe(LOG_ERR, "error", msg, args);
96     va_end(args);
97 }
98
99 void warnpe(const char *msg, ...) {
100     va_list args;
101     va_start(args, msg);
102     errmsgpe(LOG_WARNING, "warning", msg, args);
103     va_end(args);
104 }