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