From f6ba7c8f87d310da5fdfd3fd00eaed3a80c7cfbc Mon Sep 17 00:00:00 2001
From: dimitri staessens <dimitri.staessens@intec.ugent.be>
Date: Wed, 11 Jan 2017 01:33:01 +0100
Subject: logs: Comply with C99 standard for variadic macros

---
 include/ouroboros/logs.h | 45 ++++++++++++++++++++++++---------------------
 1 file changed, 24 insertions(+), 21 deletions(-)

diff --git a/include/ouroboros/logs.h b/include/ouroboros/logs.h
index ed7c7f8c..4767a6f6 100644
--- a/include/ouroboros/logs.h
+++ b/include/ouroboros/logs.h
@@ -3,8 +3,9 @@
  *
  * Logging facilities
  *
- *    Sander Vrijders <sander.vrijders@intec.ugent.be>
+ *    Sander Vrijders       <sander.vrijders@intec.ugent.be>
  *    Francesco Salvestrini <f.salvestrini@nextworks.it>
+ *    Dimitri Staessens     <dimitri.staessens@intec.ugent.be>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -26,6 +27,7 @@
 
 #include <unistd.h>
 #include <stdio.h>
+#include <stdbool.h>
 
 #ifndef OUROBOROS_PREFIX
 #error You must define OUROBOROS_PREFIX before including this file
@@ -48,38 +50,39 @@ void close_logfile(void);
 
 extern FILE * logfile;
 
-#define __LOG(CLR, LVL, FMT, ARGS...)                                   \
+#define __LOG(CLR, FUNC, LVL, ...)                                      \
         do {                                                            \
                 if (logfile != NULL) {                                  \
-                        fprintf(logfile,                                \
-                                OUROBOROS_PREFIX "(" LVL "): "          \
-                                FMT ANSI_COLOR_RESET "\n", ##ARGS);     \
+                        fprintf(logfile, OUROBOROS_PREFIX);             \
+                        fprintf(logfile, "(" LVL "): ");                \
+                        if (FUNC)                                       \
+                                fprintf(logfile, "%s: ", __FUNCTION__); \
+                        fprintf(logfile, __VA_ARGS__);                  \
+                        fprintf(logfile, "\n");                         \
                         fflush(logfile);                                \
                 } else {                                                \
-                        printf(CLR "==%05d== "                          \
-                               OUROBOROS_PREFIX "(" LVL "): "           \
-                               FMT ANSI_COLOR_RESET "\n", getpid(),     \
-                               ##ARGS);                                 \
+                        printf(CLR "==%05d== ", getpid());              \
+                        printf(OUROBOROS_PREFIX "(" LVL "): ");         \
+                        if (FUNC)                                       \
+                                printf("%s: ", __FUNCTION__);           \
+                        printf(__VA_ARGS__);                            \
+                        printf(ANSI_COLOR_RESET "\n");                  \
                 }                                                       \
         } while (0)
 
-#define LOG_ERR(FMT, ARGS...) __LOG(ANSI_COLOR_RED,             \
-                                    ERROR_CODE, FMT, ##ARGS)
-#define LOG_WARN(FMT, ARGS...) __LOG(ANSI_COLOR_YELLOW,         \
-                                     WARN_CODE, FMT, ##ARGS)
-#define LOG_INFO(FMT, ARGS...) __LOG(ANSI_COLOR_GREEN,          \
-                                     INFO_CODE, FMT, ##ARGS)
-#define LOG_NI(FMT, ARGS...) __LOG(ANSI_COLOR_BLUE,             \
-                                   IMPL_CODE,  FMT, ##ARGS)
+#define LOG_ERR(...)  __LOG(ANSI_COLOR_RED, false, ERROR_CODE, __VA_ARGS__)
+#define LOG_WARN(...) __LOG(ANSI_COLOR_YELLOW, false, WARN_CODE, __VA_ARGS__)
+#define LOG_INFO(...) __LOG(ANSI_COLOR_GREEN, false, INFO_CODE, __VA_ARGS__)
+#define LOG_NI(...)   __LOG(ANSI_COLOR_BLUE, false, IMPL_CODE, __VA_ARGS__)
 
 #ifdef CONFIG_OUROBOROS_DEBUG
-#define LOG_DBG(FMT, ARGS...) __LOG("", DEBUG_CODE, FMT, ##ARGS)
+#define LOG_DBG(...)  __LOG("", false, DEBUG_CODE, __VA_ARGS__)
+#define LOG_DBGF(...) __LOG("", true, DEBUG_CODE, __VA_ARGS__)
 #else
-#define LOG_DBG(FMT, ARGS...) do { } while (0)
+#define LOG_DBG(...)  do { } while (0)
+#define LOG_DBGF(...) do { } while (0)
 #endif
 
-#define LOG_DBGF(FMT, ARGS...) LOG_DBG("%s: " FMT, __FUNCTION__, ##ARGS)
-
 #define LOG_MISSING LOG_NI("Missing code in %s:%d",__FILE__, __LINE__)
 
 #endif
-- 
cgit v1.2.3