Blame


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