From 3b7d4c04106b01bbbedad81e62011eba74ab3c6c Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Wed, 3 Aug 2022 15:42:29 -0300 Subject: log: Create `log.{c,h}`, and add `vprintlog()` `vprintlog()` prints out the provided string to either syslog, stderr, or stdout depending on the output type. --- log.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 log.c (limited to 'log.c') diff --git a/log.c b/log.c new file mode 100644 index 0000000..12898f4 --- /dev/null +++ b/log.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include +#include +#include "log.h" +#include "misc.h" + +void vprintlog(log_output output_type, int priority, const char *fmt, va_list args) { + char *buf = calloc(vformat_len_copy(fmt, args)+1, sizeof(char)); + vsprintf(buf, fmt, args); + + switch (output_type) { + case LOG_OUT_SYSLOG: { + syslog(priority, "%s", buf); + break; + } + case LOG_OUT_STDERR: + case LOG_OUT_STDOUT: { + FILE *output = (output_type == LOG_OUT_STDOUT) ? stdout : stderr; + fprintf(output, "%s\n", buf); + break; + } + default: + break; + } + free(buf); +} -- cgit v1.2.3-13-gbd6f