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