From 086891e5c119abb9854237fc32e736fe2d67234c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 27 Nov 2014 19:48:02 +0100 Subject: log: add an "error" parameter to all low-level logging calls and intrdouce log_error_errno() as log calls that take error numbers This change has two benefits: - The format string %m will now resolve to the specified error (or to errno if the specified error is 0. This allows getting rid of a ton of strerror() invocations, a function that is not thread-safe. - The specified error can be passed to the journal in the ERRNO= field. Now of course, we just need somebody to convert all cases of this: log_error("Something happened: %s", strerror(-r)); into thus: log_error_errno(-r, "Something happened: %m"); --- src/shared/conf-parser.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/shared/conf-parser.c') diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 027c49ce3b..6bd9d9ebf7 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -38,10 +38,16 @@ #include "exit-status.h" #include "sd-messages.h" -int log_syntax_internal(const char *unit, int level, - const char *file, unsigned line, const char *func, - const char *config_file, unsigned config_line, - int error, const char *format, ...) { +int log_syntax_internal( + const char *unit, + int level, + const char *file, + int line, + const char *func, + const char *config_file, + unsigned config_line, + int error, + const char *format, ...) { _cleanup_free_ char *msg = NULL; int r; @@ -55,21 +61,21 @@ int log_syntax_internal(const char *unit, int level, if (unit) r = log_struct_internal(level, + error > 0 ? error : EINVAL, file, line, func, getpid() == 1 ? "UNIT=%s" : "USER_UNIT=%s", unit, MESSAGE_ID(SD_MESSAGE_CONFIG_ERROR), "CONFIG_FILE=%s", config_file, "CONFIG_LINE=%u", config_line, - "ERRNO=%d", error > 0 ? error : EINVAL, "MESSAGE=[%s:%u] %s", config_file, config_line, msg, NULL); else r = log_struct_internal(level, + error > 0 ? error : EINVAL, file, line, func, MESSAGE_ID(SD_MESSAGE_CONFIG_ERROR), "CONFIG_FILE=%s", config_file, "CONFIG_LINE=%u", config_line, - "ERRNO=%d", error > 0 ? error : EINVAL, "MESSAGE=[%s:%u] %s", config_file, config_line, msg, NULL); -- cgit v1.2.3-54-g00ecf