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");
This commit is contained in:
Lennart Poettering
2014-11-27 22:05:23 +01:00
parent fb6d9b77a7
commit 086891e5c1
21 changed files with 209 additions and 153 deletions
+1 -1
View File
@@ -44,7 +44,7 @@ static void systemd_kmod_log(void *data, int priority, const char *file, int lin
const char *fn, const char *format, va_list args) {
DISABLE_WARNING_FORMAT_NONLITERAL;
log_metav(priority, file, line, fn, format, args);
log_metav(priority, 0, file, line, fn, format, args);
REENABLE_WARNING;
}