From d401a5e41174e819304d69e12b43d3ab323ae8eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 10 Dec 2020 11:56:05 +0100 Subject: [PATCH] json: log location also when there is no file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit E.g. in nss-resolve it is still useful to print the location of the error: src/test/test-nss.c:231: dlsym(0x0x1dc6fb0, _nss_resolve_gethostbyname2_r) → 0x0x7fdbfc53f626 (string):1:40: JSON field ifindex is out of bounds for an interface index. I opted to use a partially duplicated if condition to avoid nesting. It's nice to have the log calls vertically aligned. The compiler will optimize this nicely. --- src/shared/json.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/shared/json.c b/src/shared/json.c index 28fe482749..655bbcc6bb 100644 --- a/src/shared/json.c +++ b/src/shared/json.c @@ -3854,6 +3854,16 @@ int json_log_internal( "CONFIG_COLUMN=%u", source_column, LOG_MESSAGE("%s:%u:%u: %s", source, source_line, source_column, buffer), NULL); + else if (source_line > 0 && source_column > 0) + return log_struct_internal( + LOG_REALM_PLUS_LEVEL(LOG_REALM_SYSTEMD, level), + error, + file, line, func, + "MESSAGE_ID=" SD_MESSAGE_INVALID_CONFIGURATION_STR, + "CONFIG_LINE=%u", source_line, + "CONFIG_COLUMN=%u", source_column, + LOG_MESSAGE("(string):%u:%u: %s", source_line, source_column, buffer), + NULL); else return log_struct_internal( LOG_REALM_PLUS_LEVEL(LOG_REALM_SYSTEMD, level),