From adb9e45760c75dc6d9a59fb3b0e8252832f8f649 Mon Sep 17 00:00:00 2001 From: Pompolic <pompolic@special-circumstanc.es> Date: Wed, 23 Mar 2022 21:18:34 +0100 Subject: [PATCH] (WIP) Make logging function variadic --- pdf.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pdf.c b/pdf.c index 9c0e702..4c42ee4 100644 --- a/pdf.c +++ b/pdf.c @@ -48,9 +48,14 @@ log_entry **logs = NULL; void free_log_messages(); -void log_message(const char *message, uint8_t severity) +#include <stdarg.h> + +void log_message(uint8_t severity, const char *format, ...) { log_entry *msg; + char *final_string_buf = calloc(2048, sizeof(char)); + char *message; + va_list ap; if(logs_failed) { @@ -92,6 +97,20 @@ void log_message(const char *message, uint8_t severity) return; } + if(final_string_buf) + { + size_t msg_len; + + va_start(ap, format); + vsnprintf(final_string_buf, 2048, format, ap); + va_end(ap); + + msg_len = strlen(final_string_buf); + message = calloc(msg_len, sizeof(char)); + /* Due to calloc, last byte should be 0 at this point, so the string will be zero-terminated */ + strncpy(message, final_string_buf, msg_len-1); + } + msg = malloc(sizeof(log_message)); msg->message = message; msg->severity = severity; -- GitLab