diff options
author | mrb0nk500 <b0nk@b0nk.xyz> | 2022-08-03 15:42:29 -0300 |
---|---|---|
committer | mrb0nk500 <b0nk@b0nk.xyz> | 2022-08-03 15:42:29 -0300 |
commit | 3b7d4c04106b01bbbedad81e62011eba74ab3c6c (patch) | |
tree | 29f28df2812c1fcc1ed6c038a25f0efc7e557c04 /log.c | |
parent | 1c59139687546db411fe6957cbdb2122666a0515 (diff) |
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.
Diffstat (limited to 'log.c')
-rw-r--r-- | log.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -0,0 +1,28 @@ +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <syslog.h> +#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); +} |