Blame


1 dded5403 2023-10-16 op /*
2 dded5403 2023-10-16 op * This is free and unencumbered software released into the public domain.
3 dded5403 2023-10-16 op *
4 dded5403 2023-10-16 op * Anyone is free to copy, modify, publish, use, compile, sell, or
5 dded5403 2023-10-16 op * distribute this software, either in source code form or as a compiled
6 dded5403 2023-10-16 op * binary, for any purpose, commercial or non-commercial, and by any
7 dded5403 2023-10-16 op * means.
8 dded5403 2023-10-16 op */
9 dded5403 2023-10-16 op
10 dded5403 2023-10-16 op #define LOG_ATTR_PRINTF(A, B) __attribute__((__format__ (printf, A, B)))
11 dded5403 2023-10-16 op struct logger {
12 dded5403 2023-10-16 op __dead void (*fatal)(int, const char *, ...) LOG_ATTR_PRINTF(2, 3);
13 dded5403 2023-10-16 op __dead void (*fatalx)(int, const char *, ...) LOG_ATTR_PRINTF(2, 3);
14 dded5403 2023-10-16 op void (*warn)(const char *, ...) LOG_ATTR_PRINTF(1, 2);
15 dded5403 2023-10-16 op void (*warnx)(const char *, ...) LOG_ATTR_PRINTF(1, 2);
16 dded5403 2023-10-16 op void (*info)(const char *, ...) LOG_ATTR_PRINTF(1, 2);
17 dded5403 2023-10-16 op void (*debug)(const char *, ...) LOG_ATTR_PRINTF(1, 2);
18 dded5403 2023-10-16 op };
19 dded5403 2023-10-16 op #undef LOG_ATTR_PRINTF
20 dded5403 2023-10-16 op
21 dded5403 2023-10-16 op extern const struct logger *logger, syslogger, dbglogger;
22 dded5403 2023-10-16 op
23 dded5403 2023-10-16 op #define fatal(...) logger->fatal(1, __VA_ARGS__)
24 dded5403 2023-10-16 op #define fatalx(...) logger->fatalx(1, __VA_ARGS__)
25 dded5403 2023-10-16 op #define log_warn(...) logger->warn(__VA_ARGS__)
26 dded5403 2023-10-16 op #define log_warnx(...) logger->warnx(__VA_ARGS__)
27 dded5403 2023-10-16 op #define log_info(...) logger->info(__VA_ARGS__)
28 dded5403 2023-10-16 op #define log_debug(...) logger->debug(__VA_ARGS__)
29 dded5403 2023-10-16 op
30 dded5403 2023-10-16 op void log_init(int, int);
31 dded5403 2023-10-16 op void log_setverbose(int);