#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); } void printlog(log_output output_type, int priority, const char *fmt, ...) { va_list args; va_start(args, fmt); vprintlog(output_type, priority, fmt, args); va_end(args); }