diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-11-27 19:48:02 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-11-27 22:05:23 +0100 |
commit | 086891e5c119abb9854237fc32e736fe2d67234c (patch) | |
tree | 4fc81d73413d1f1aa351e0de248307180c8893de /src/shared/conf-parser.c | |
parent | fb6d9b77a71a5f007392b754bf7d8e06a6bed69a (diff) |
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");
Diffstat (limited to 'src/shared/conf-parser.c')
-rw-r--r-- | src/shared/conf-parser.c | 18 |
1 files changed, 12 insertions, 6 deletions
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); |