From 0dde9a8ceec3e122befe3124da66f301934fdf70 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Fri, 5 Feb 2021 18:44:14 +0100
Subject: [PATCH] WIP: Prints '...' at the end of a log line if its to long

---
 src/base/common.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/base/common.c b/src/base/common.c
index 3026d0fd..3225f6c4 100644
--- a/src/base/common.c
+++ b/src/base/common.c
@@ -76,10 +76,19 @@ __lkt_log(enum log_level level, const char *section, const char *func, const cha
     if (level > __log_level)
         return;
 
-    safe_snprintf(line, LKT_MESSAGE_MAX, " %c [%02d:%02d:%02d] %-10s %s(%s+%ld): %s\n",
-                  level == ERROR ? '!' : level == WARN ? '*' : level == INFO ? '.' : ' ',
-                  hour, min, sec,
-                  section, func, file, line_number, format);
+    char c_level  = level == ERROR ? '!' : level == WARN ? '*' : level == INFO ? '.' : ' ';
+    ssize_t count = safe_snprintf(line, LKT_MESSAGE_MAX,
+                                  " %c [%02d:%02d:%02d] %-10s %s(%s+%ld): %s\n",
+                                  c_level, hour, min, sec, section, func, file,
+                                  line_number, format);
+    /* Check for overflow */
+    if (count >= LKT_MESSAGE_MAX - 1) {
+        line[LKT_MESSAGE_MAX - 1] = '\0';
+        line[LKT_MESSAGE_MAX - 2] = '\n';
+        line[LKT_MESSAGE_MAX - 3] = '.';
+        line[LKT_MESSAGE_MAX - 4] = '.';
+        line[LKT_MESSAGE_MAX - 5] = '.';
+    }
 
     va_start(ap, format);
     vfprintf(stderr, line, ap);
-- 
GitLab