Modules are located in src/modules.
[userinfo.git] / src / err.c
blob952b7875c9ef02fe89e0f90268f95ea29da7b55a
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdarg.h>
4 #include <limits.h>
6 #define err(eval, fmt, ...) print_string(eval, 1, fmt, ## __VA_ARGS__)
7 #define errx(eval, fmt, ...) print_string(eval, 0, fmt, ## __VA_ARGS__)
8 #define warn(fmt, ...) print_string(-1, 0, fmt, ## __VA_ARGS__)
9 #define warnx(fmt, ...) print_string(-1, 1, fmt, ## __VA_ARGS__)
11 void print_string(int eval, int prog, const char *fmt, ...)
13 va_list ap;
14 char line[LINE_MAX];
16 #ifndef HAVE___PROGNAME
17 char *__progname = "ui";
18 #else
19 extern char *__progname;
20 #endif
22 va_start(ap, fmt);
23 vsnprintf(line, sizeof(line), fmt, ap);
24 va_end(ap);
26 fprintf(stderr, "%s%s%s\n", (prog) ? __progname : "", (prog) ? ": " : "",
27 line);
29 if (eval > -1)
30 exit(eval);
32 return;