From 2a331dedf58e308f8fa565b4c07fd26353387b93 Mon Sep 17 00:00:00 2001 From: Wang Jian Date: Tue, 7 Apr 2026 20:51:02 +0800 Subject: [PATCH] fix: add missing fflush(stdout) to write log message immediately Without fflush(stdout), log messages have incorrect timestamp (added by syslogd or journald), or even get printed out when exit() but not startup. --- src/utils.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/utils.c b/src/utils.c index 666932f..364cd2b 100644 --- a/src/utils.c +++ b/src/utils.c @@ -85,7 +85,7 @@ int set_socket_rcvbuf(int fd, int size) { * * @param level Message log level * @param format printf style format string - * @returns Whatever printf returns + * @return Message length (newline included) */ int logger(loglevel_t level, const char *format, ...) { va_list ap; @@ -120,7 +120,10 @@ int logger(loglevel_t level, const char *format, ...) { // Automatically add newline if format doesn't end with one if (format && strlen(format) > 0 && format[strlen(format) - 1] != '\n') { fputc('\n', stdout); + r++; } + + fflush(stdout); } return r; }