From 1189a9f9f521ab79f1f8fb94434c7f4cbac88ef0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 11 Jan 2018 00:39:12 +0100 Subject: log: minimize includes in log.h log.h really should only include the bare minimum of other headers, as it is really pulled into pretty much everything else and already in itself one of the most basic pieces of code we have. Let's hence drop inclusion of: 1. sd-id128.h because it's entirely unneeded in current log.h 2. errno.h, dito. 3. sys/signalfd.h which we can replace by a simple struct forward declaration 4. process-util.h which was needed for getpid_cached() which we now hide in a funciton log_emergency_level() instead, which nicely abstracts the details away. 5. sys/socket.h which was needed for struct iovec, but a simple struct forward declaration suffices for that too. Ultimately this actually makes our source tree larger (since users of the functionality above must now include it themselves, log.h won't do that for them), but I think it helps to untangle our web of includes a tiny bit. (Background: I'd like to isolate the generic bits of src/basic/ enough so that we can do a git submodule import into casync for it) --- src/basic/errno-list.c | 1 + src/basic/fs-util.c | 1 + src/basic/gunicode.c | 2 -- src/basic/hash-funcs.c | 2 ++ src/basic/hostname-util.h | 1 + src/basic/log.c | 8 +++++++- src/basic/log.h | 18 +++++++++--------- src/basic/process-util.h | 1 + src/basic/random-util.c | 5 +++-- src/basic/socket-util.c | 1 + src/basic/stat-util.c | 5 +++-- src/basic/time-util.c | 1 + src/basic/verbs.c | 2 ++ src/libelogind/sd-bus/bus-control.c | 1 + src/libelogind/sd-bus/bus-gvariant.c | 5 +++++ src/libelogind/sd-bus/bus-signature.c | 2 ++ src/libelogind/sd-bus/bus-socket.c | 10 +++++++--- src/libelogind/sd-bus/bus-type.c | 4 ++++ src/libelogind/sd-bus/bus-type.h | 2 -- src/libelogind/sd-bus/sd-bus.c | 1 + src/libelogind/sd-daemon/sd-daemon.c | 1 + src/libelogind/sd-id128/id128-util.c | 1 + src/login/logind-core.c | 1 + src/login/logind.c | 2 ++ src/shared/test-tables.h | 1 + src/test/test-cgroup.c | 1 + src/test/test-extract-word.c | 1 + src/test/test-hash.c | 1 + src/test/test-hexdecoct.c | 2 ++ src/test/test-log.c | 2 +- src/test/test-parse-util.c | 1 + src/test/test-sizeof.c | 1 + src/test/test-util.c | 1 + 33 files changed, 67 insertions(+), 22 deletions(-) diff --git a/src/basic/errno-list.c b/src/basic/errno-list.c index ee48332db..256eec086 100644 --- a/src/basic/errno-list.c +++ b/src/basic/errno-list.c @@ -18,6 +18,7 @@ along with systemd; If not, see . ***/ +//#include #include #include "errno-list.h" diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index 0cd339d29..a03cbfe35 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -39,6 +39,7 @@ #include "mkdir.h" #include "parse-util.h" #include "path-util.h" +//#include "process-util.h" #include "stat-util.h" #include "stdio-util.h" #include "string-util.h" diff --git a/src/basic/gunicode.c b/src/basic/gunicode.c index e6ac0545a..8aff4a0fc 100644 --- a/src/basic/gunicode.c +++ b/src/basic/gunicode.c @@ -4,8 +4,6 @@ * Copyright 2000, 2005 Red Hat, Inc. */ -#include - #include "gunicode.h" #define unichar uint32_t diff --git a/src/basic/hash-funcs.c b/src/basic/hash-funcs.c index e69f81558..1716401d1 100644 --- a/src/basic/hash-funcs.c +++ b/src/basic/hash-funcs.c @@ -19,6 +19,8 @@ along with systemd; If not, see . ***/ +//#include + #include "hash-funcs.h" void string_hash_func(const void *p, struct siphash *state) { diff --git a/src/basic/hostname-util.h b/src/basic/hostname-util.h index c10ba3261..37fb56004 100644 --- a/src/basic/hostname-util.h +++ b/src/basic/hostname-util.h @@ -21,6 +21,7 @@ ***/ #include +//#include #include "macro.h" diff --git a/src/basic/log.c b/src/basic/log.c index 43cb70096..5bbf65a4a 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -1260,7 +1260,6 @@ void log_received_signal(int level, const struct signalfd_siginfo *si) { log_full(level, "Received SIG%s.", signal_to_string(si->ssi_signo)); - } #endif // 0 @@ -1324,3 +1323,10 @@ void log_set_always_reopen_console(bool b) { void log_set_open_when_needed(bool b) { open_when_needed = b; } + +int log_emergency_level(void) { + /* Returns the log level to use for log_emergency() logging. We use LOG_EMERG only when we are PID 1, as only + * then the system of the whole system is obviously affected. */ + + return getpid_cached() == 1 ? LOG_EMERG : LOG_ERR; +} diff --git a/src/basic/log.h b/src/basic/log.h index 297bb92b9..3bcc87766 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -20,18 +20,16 @@ along with systemd; If not, see . ***/ -#include #include #include #include -#include -#include #include -#include "sd-id128.h" - #include "macro.h" -#include "process-util.h" + +/* Some structures we reference but don't want to pull in headers for */ +struct iovec; +struct signalfd_siginfo; typedef enum LogRealm { LOG_REALM_SYSTEMD, @@ -196,7 +194,7 @@ int log_struct_iovec_internal( const char *file, int line, const char *func, - const struct iovec input_iovec[], + const struct iovec *input_iovec, size_t n_input_iovec); /* This modifies the buffer passed! */ @@ -254,13 +252,15 @@ void log_assert_failed_return_realm( #define log_full(level, ...) log_full_errno((level), 0, __VA_ARGS__) +int log_emergency_level(void); + /* Normal logging */ #define log_debug(...) log_full(LOG_DEBUG, __VA_ARGS__) #define log_info(...) log_full(LOG_INFO, __VA_ARGS__) #define log_notice(...) log_full(LOG_NOTICE, __VA_ARGS__) #define log_warning(...) log_full(LOG_WARNING, __VA_ARGS__) #define log_error(...) log_full(LOG_ERR, __VA_ARGS__) -#define log_emergency(...) log_full(getpid_cached() == 1 ? LOG_EMERG : LOG_ERR, __VA_ARGS__) +#define log_emergency(...) log_full(log_emergency_level(), __VA_ARGS__) /* Logging triggered by an errno-like error */ #define log_debug_errno(error, ...) log_full_errno(LOG_DEBUG, error, __VA_ARGS__) @@ -268,7 +268,7 @@ void log_assert_failed_return_realm( #define log_notice_errno(error, ...) log_full_errno(LOG_NOTICE, error, __VA_ARGS__) #define log_warning_errno(error, ...) log_full_errno(LOG_WARNING, error, __VA_ARGS__) #define log_error_errno(error, ...) log_full_errno(LOG_ERR, error, __VA_ARGS__) -#define log_emergency_errno(error, ...) log_full_errno(getpid_cached() == 1 ? LOG_EMERG : LOG_ERR, error, __VA_ARGS__) +#define log_emergency_errno(error, ...) log_full_errno(log_emergency_level(), error, __VA_ARGS__) #ifdef LOG_TRACE # define log_trace(...) log_debug(__VA_ARGS__) diff --git a/src/basic/process-util.h b/src/basic/process-util.h index 652e4c341..7942d36e6 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -21,6 +21,7 @@ ***/ #include +//#include #include #include #include diff --git a/src/basic/random-util.c b/src/basic/random-util.c index 1bc800089..127c4522b 100644 --- a/src/basic/random-util.c +++ b/src/basic/random-util.c @@ -21,11 +21,12 @@ #include #include #include +//#include #include +//#include #include +//#include #include -#include -#include #if HAVE_SYS_AUXV_H # include diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index c170e7432..d89136b01 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -41,6 +41,7 @@ #include "missing.h" #include "parse-util.h" #include "path-util.h" +//#include "process-util.h" #include "socket-util.h" #include "string-table.h" #include "string-util.h" diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index 064e316fc..964fa91b2 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -21,10 +21,11 @@ #include #include #include -#include -#include #include +//#include +//#include #include +//#include #include #include "dirent-util.h" diff --git a/src/basic/time-util.c b/src/basic/time-util.c index 98324c234..dc387d8b7 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -38,6 +38,7 @@ #include "macro.h" #include "parse-util.h" #include "path-util.h" +//#include "process-util.h" #include "string-util.h" #include "strv.h" #include "time-util.h" diff --git a/src/basic/verbs.c b/src/basic/verbs.c index 4f17d39f8..f2e9f29d6 100644 --- a/src/basic/verbs.c +++ b/src/basic/verbs.c @@ -22,10 +22,12 @@ #include #include #include +//#include //#include "env-util.h" #include "log.h" #include "macro.h" +//#include "process-util.h" #include "string-util.h" #include "verbs.h" #include "virt.h" diff --git a/src/libelogind/sd-bus/bus-control.c b/src/libelogind/sd-bus/bus-control.c index c6e3bf99f..819128cbd 100644 --- a/src/libelogind/sd-bus/bus-control.c +++ b/src/libelogind/sd-bus/bus-control.c @@ -33,6 +33,7 @@ #include "bus-message.h" #include "bus-util.h" #include "capability-util.h" +//#include "process-util.h" #include "stdio-util.h" #include "string-util.h" #include "strv.h" diff --git a/src/libelogind/sd-bus/bus-gvariant.c b/src/libelogind/sd-bus/bus-gvariant.c index 6a990a02c..8730a924c 100644 --- a/src/libelogind/sd-bus/bus-gvariant.c +++ b/src/libelogind/sd-bus/bus-gvariant.c @@ -18,6 +18,11 @@ along with systemd; If not, see . ***/ +//#include +//#include + +//#include "sd-bus.h" + #include "bus-gvariant.h" #include "bus-signature.h" #include "bus-type.h" diff --git a/src/libelogind/sd-bus/bus-signature.c b/src/libelogind/sd-bus/bus-signature.c index d16461f4a..ba9708c7b 100644 --- a/src/libelogind/sd-bus/bus-signature.c +++ b/src/libelogind/sd-bus/bus-signature.c @@ -20,6 +20,8 @@ #include +//#include "sd-bus.h" + #include "bus-signature.h" #include "bus-type.h" diff --git a/src/libelogind/sd-bus/bus-socket.c b/src/libelogind/sd-bus/bus-socket.c index bc64779d3..bd0895f27 100644 --- a/src/libelogind/sd-bus/bus-socket.c +++ b/src/libelogind/sd-bus/bus-socket.c @@ -38,6 +38,7 @@ #include "macro.h" #include "missing.h" //#include "path-util.h" +//#include "process-util.h" #include "selinux-util.h" #include "signal-util.h" #include "stdio-util.h" @@ -620,10 +621,13 @@ static void bus_get_peercred(sd_bus *b) { /* Get the list of auxiliary groups of the peer */ r = getpeergroups(b->input_fd, &b->groups); - if (r >= 0) + if (r < 0) { + if (!IN_SET(r, -EOPNOTSUPP, -ENOPROTOOPT)) + log_debug_errno(r, "Failed to determine peer groups list: %m"); + + b->n_groups = (size_t) -1; + } else b->n_groups = (size_t) r; - else if (!IN_SET(r, -EOPNOTSUPP, -ENOPROTOOPT)) - log_debug_errno(r, "Failed to determine peer's group list: %m"); } static int bus_socket_start_auth_client(sd_bus *b) { diff --git a/src/libelogind/sd-bus/bus-type.c b/src/libelogind/sd-bus/bus-type.c index 817040b1a..c580faaf9 100644 --- a/src/libelogind/sd-bus/bus-type.c +++ b/src/libelogind/sd-bus/bus-type.c @@ -18,6 +18,10 @@ along with systemd; If not, see . ***/ +//#include + +//#include "sd-bus.h" + #include "bus-type.h" bool bus_type_is_valid(char c) { diff --git a/src/libelogind/sd-bus/bus-type.h b/src/libelogind/sd-bus/bus-type.h index ae272b1e6..834f09777 100644 --- a/src/libelogind/sd-bus/bus-type.h +++ b/src/libelogind/sd-bus/bus-type.h @@ -22,8 +22,6 @@ #include -#include "sd-bus.h" - #include "macro.h" bool bus_type_is_valid(char c) _const_; diff --git a/src/libelogind/sd-bus/sd-bus.c b/src/libelogind/sd-bus/sd-bus.c index 0668df2c1..0a43324b9 100644 --- a/src/libelogind/sd-bus/sd-bus.c +++ b/src/libelogind/sd-bus/sd-bus.c @@ -50,6 +50,7 @@ #include "macro.h" #include "missing.h" #include "parse-util.h" +//#include "process-util.h" #include "string-util.h" #include "strv.h" #include "util.h" diff --git a/src/libelogind/sd-daemon/sd-daemon.c b/src/libelogind/sd-daemon/sd-daemon.c index 3e4c19cf5..147042c9a 100644 --- a/src/libelogind/sd-daemon/sd-daemon.c +++ b/src/libelogind/sd-daemon/sd-daemon.c @@ -39,6 +39,7 @@ #include "fs-util.h" #include "parse-util.h" #include "path-util.h" +//#include "process-util.h" #include "socket-util.h" #include "strv.h" #include "util.h" diff --git a/src/libelogind/sd-id128/id128-util.c b/src/libelogind/sd-id128/id128-util.c index 6f6334bbe..bdadf3efa 100644 --- a/src/libelogind/sd-id128/id128-util.c +++ b/src/libelogind/sd-id128/id128-util.c @@ -18,6 +18,7 @@ along with systemd; If not, see . ***/ +//#include #include #include diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 71b9c76d3..625521e34 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -31,6 +31,7 @@ #include "fd-util.h" #include "logind.h" #include "parse-util.h" +//#include "process-util.h" #include "strv.h" #include "terminal-util.h" #include "udev-util.h" diff --git a/src/login/logind.c b/src/login/logind.c index 0238cd889..6993b965e 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -33,12 +33,14 @@ #include "alloc-util.h" #include "bus-error.h" #include "bus-util.h" +//#include "cgroup-util.h" #include "conf-parser.h" #include "def.h" #include "dirent-util.h" #include "fd-util.h" #include "format-util.h" #include "logind.h" +//#include "process-util.h" #include "selinux-util.h" #include "signal-util.h" #include "strv.h" diff --git a/src/shared/test-tables.h b/src/shared/test-tables.h index 6b223b1ee..b1ca4247f 100644 --- a/src/shared/test-tables.h +++ b/src/shared/test-tables.h @@ -20,6 +20,7 @@ #include #include +//#include typedef const char* (*lookup_t)(int); typedef int (*reverse_t)(const char*); diff --git a/src/test/test-cgroup.c b/src/test/test-cgroup.c index 5b06b9b1a..232577a70 100644 --- a/src/test/test-cgroup.c +++ b/src/test/test-cgroup.c @@ -23,6 +23,7 @@ #include "cgroup-util.h" #include "path-util.h" +//#include "process-util.h" #include "string-util.h" #include "util.h" /// Additional includes needed by elogind diff --git a/src/test/test-extract-word.c b/src/test/test-extract-word.c index c8f735607..cff40a4fb 100644 --- a/src/test/test-extract-word.c +++ b/src/test/test-extract-word.c @@ -19,6 +19,7 @@ along with systemd; If not, see . ***/ +//#include #include #include diff --git a/src/test/test-hash.c b/src/test/test-hash.c index f3b4258d6..a08771abb 100644 --- a/src/test/test-hash.c +++ b/src/test/test-hash.c @@ -18,6 +18,7 @@ along with systemd; If not, see . ***/ +//#include #include #include "alloc-util.h" diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c index fdb1d1ae3..5756340f3 100644 --- a/src/test/test-hexdecoct.c +++ b/src/test/test-hexdecoct.c @@ -18,6 +18,8 @@ along with systemd; If not, see . ***/ +//#include + #include "alloc-util.h" #include "hexdecoct.h" #include "macro.h" diff --git a/src/test/test-log.c b/src/test/test-log.c index 3754b1285..242092bc1 100644 --- a/src/test/test-log.c +++ b/src/test/test-log.c @@ -23,9 +23,9 @@ #include "format-util.h" #include "log.h" -#include "util.h" /// Additional includes needed by elogind #include "process-util.h" +//#include "util.h" assert_cc(LOG_REALM_REMOVE_LEVEL(LOG_REALM_PLUS_LEVEL(LOG_REALM_SYSTEMD, LOG_FTP | LOG_DEBUG)) == LOG_REALM_SYSTEMD); diff --git a/src/test/test-parse-util.c b/src/test/test-parse-util.c index 241145806..668b5cdee 100644 --- a/src/test/test-parse-util.c +++ b/src/test/test-parse-util.c @@ -19,6 +19,7 @@ along with systemd; If not, see . ***/ +//#include #include #include diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c index cdca954ea..0d96b02c2 100644 --- a/src/test/test-sizeof.c +++ b/src/test/test-sizeof.c @@ -19,6 +19,7 @@ ***/ #include +//#include #include "time-util.h" diff --git a/src/test/test-util.c b/src/test/test-util.c index c08a51a95..1bb39a69d 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -28,6 +28,7 @@ #include "fileio.h" #include "fs-util.h" #include "parse-util.h" +//#include "process-util.h" //#include "raw-clone.h" #include "rm-rf.h" #include "string-util.h" -- cgit v1.2.3