From: Daan De Meyer Date: Mon, 5 May 2025 20:06:17 +0000 (+0200) Subject: main-func: Reduce transitive includes X-Git-Tag: v258-rc1~690^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76d62b63efbcf3eadb5d6579b1d4d7baa74bb0a4;p=thirdparty%2Fsystemd.git main-func: Reduce transitive includes Let's move some logic from _DEFINE_MAIN_FUNCTION() and other places in main-func.h into functions that we implement in main-func.c to allow moving some included headers from the header to the .c file. --- diff --git a/src/ac-power/ac-power.c b/src/ac-power/ac-power.c index 6bb3eb10168..06f999dc802 100644 --- a/src/ac-power/ac-power.c +++ b/src/ac-power/ac-power.c @@ -8,6 +8,7 @@ #include "log.h" #include "main-func.h" #include "pretty-print.h" +#include "string-util.h" static bool arg_verbose = false; diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c index 018cd353213..a39398a638c 100644 --- a/src/backlight/backlight.c +++ b/src/backlight/backlight.c @@ -7,6 +7,7 @@ #include "sd-device.h" #include "alloc-util.h" +#include "argv-util.h" #include "device-util.h" #include "escape.h" #include "fileio.h" diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index d672000e55a..8091a44705d 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -3,6 +3,7 @@ #include #include "sd-bus.h" +#include "sd-daemon.h" #include "sd-json.h" #include "alloc-util.h" diff --git a/src/creds/creds.c b/src/creds/creds.c index 5caa45062e7..7c2e49da4f6 100644 --- a/src/creds/creds.c +++ b/src/creds/creds.c @@ -23,6 +23,7 @@ #include "missing_magic.h" #include "pager.h" #include "parse-argument.h" +#include "polkit-agent.h" #include "pretty-print.h" #include "process-util.h" #include "stat-util.h" diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index e1eadde4987..c591cbeeebf 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -13,6 +13,7 @@ #include "sd-messages.h" #include "alloc-util.h" +#include "argv-util.h" #include "ask-password-api.h" #include "build.h" #include "cryptsetup-fido2.h" diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c index 55232914ed3..6ac292f1408 100644 --- a/src/dissect/dissect.c +++ b/src/dissect/dissect.c @@ -11,6 +11,7 @@ #include "sd-device.h" #include "architecture.h" +#include "argv-util.h" #include "blockdev-util.h" #include "build.h" #include "chase.h" diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 6f802898816..31c4c485c0f 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -5,9 +5,11 @@ #include #include "alloc-util.h" +#include "argv-util.h" #include "bus-error.h" #include "bus-locator.h" #include "bus-unit-util.h" +#include "bus-util.h" #include "chase.h" #include "creds-util.h" #include "efi-loader.h" diff --git a/src/growfs/makefs.c b/src/growfs/makefs.c index c76e81d9762..1e404bc7bfb 100644 --- a/src/growfs/makefs.c +++ b/src/growfs/makefs.c @@ -11,6 +11,7 @@ #include "blockdev-util.h" #include "dissect-image.h" #include "fd-util.h" +#include "log.h" #include "main-func.h" #include "mkfs-util.h" #include "path-util.h" diff --git a/src/home/homework.c b/src/home/homework.c index 93a4e8dc28b..8af0847c78f 100644 --- a/src/home/homework.c +++ b/src/home/homework.c @@ -3,6 +3,8 @@ #include #include +#include "sd-daemon.h" + #include "blockdev-util.h" #include "bus-unit-util.h" #include "chown-recursive.h" diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 962c5681e41..1bfd14b0d8c 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -15,6 +15,7 @@ #include "bus-get-properties.h" #include "bus-log-control-api.h" #include "bus-polkit.h" +#include "bus-util.h" #include "constants.h" #include "daemon-util.h" #include "device-private.h" diff --git a/src/import/importd.c b/src/import/importd.c index a7de9ed2479..6390b76d545 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -12,6 +12,7 @@ #include "bus-get-properties.h" #include "bus-log-control-api.h" #include "bus-polkit.h" +#include "bus-util.h" #include "common-signal.h" #include "constants.h" #include "daemon-util.h" diff --git a/src/integritysetup/integritysetup.c b/src/integritysetup/integritysetup.c index 56c02d4ad89..ece8c3c1a84 100644 --- a/src/integritysetup/integritysetup.c +++ b/src/integritysetup/integritysetup.c @@ -5,6 +5,7 @@ #include #include "alloc-util.h" +#include "argv-util.h" #include "cryptsetup-util.h" #include "fileio.h" #include "hexdecoct.h" diff --git a/src/kernel-install/kernel-install.c b/src/kernel-install/kernel-install.c index d4e65f52087..0a62d994bc4 100644 --- a/src/kernel-install/kernel-install.c +++ b/src/kernel-install/kernel-install.c @@ -4,6 +4,7 @@ #include #include +#include "argv-util.h" #include "boot-entry.h" #include "build.h" #include "chase.h" diff --git a/src/locale/localed.c b/src/locale/localed.c index 3f742b8a627..24ec6263e5f 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -14,6 +14,7 @@ #include "bus-message.h" #include "bus-polkit.h" #include "bus-unit-util.h" +#include "bus-util.h" #include "constants.h" #include "daemon-util.h" #include "kbd-util.h" diff --git a/src/login/inhibit.c b/src/login/inhibit.c index 276a3ba70dc..df68eb7ef07 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -19,6 +19,7 @@ #include "log.h" #include "main-func.h" #include "pager.h" +#include "polkit-agent.h" #include "pretty-print.h" #include "process-util.h" #include "signal-util.h" diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c index 451e181cd86..0b3e977d5c3 100644 --- a/src/login/user-runtime-dir.c +++ b/src/login/user-runtime-dir.c @@ -14,6 +14,7 @@ #include "fs-util.h" #include "label-util.h" #include "limits-util.h" +#include "log.h" #include "main-func.h" #include "missing_magic.h" #include "missing_syscall.h" diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c index 5a6052549d3..4cd670748e1 100644 --- a/src/machine/machinectl.c +++ b/src/machine/machinectl.c @@ -38,6 +38,7 @@ #include "hostname-util.h" #include "import-util.h" #include "in-addr-util.h" +#include "label-util.h" #include "locale-util.h" #include "log.h" #include "logs-show.h" diff --git a/src/machine/machined.c b/src/machine/machined.c index 364f9dfab67..658a7e4f207 100644 --- a/src/machine/machined.c +++ b/src/machine/machined.c @@ -11,6 +11,7 @@ #include "bus-locator.h" #include "bus-log-control-api.h" #include "bus-polkit.h" +#include "bus-util.h" #include "cgroup-util.h" #include "common-signal.h" #include "daemon-util.h" diff --git a/src/measure/measure.c b/src/measure/measure.c index b81bc2453c0..fb18b1a9f71 100644 --- a/src/measure/measure.c +++ b/src/measure/measure.c @@ -16,6 +16,7 @@ #include "main-func.h" #include "memstream-util.h" #include "openssl-util.h" +#include "pager.h" #include "parse-argument.h" #include "parse-util.h" #include "pe-binary.h" diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index 59daeb5cb01..27ecb23e9bf 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -8,6 +8,7 @@ #include "build.h" #include "conf-files.h" #include "constants.h" +#include "errno-util.h" #include "fd-util.h" #include "fileio.h" #include "log.h" diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index bda1e3a3beb..de90f9d9837 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -5,6 +5,7 @@ #include "sd-bus.h" #include "sd-device.h" +#include "argv-util.h" #include "build.h" #include "bus-error.h" #include "bus-locator.h" diff --git a/src/notify/notify.c b/src/notify/notify.c index acc8bc72af1..6f924d719cc 100644 --- a/src/notify/notify.c +++ b/src/notify/notify.c @@ -24,6 +24,7 @@ #include "parse-util.h" #include "pretty-print.h" #include "process-util.h" +#include "signal-util.h" #include "socket-util.h" #include "string-util.h" #include "strv.h" diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index dd9649d71e0..bda38db1058 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -16,6 +16,10 @@ #include #include +#if HAVE_SELINUX +#include +#endif + #include "sd-bus.h" #include "sd-daemon.h" #include "sd-id128.h" diff --git a/src/nsresourced/nsresourcework.c b/src/nsresourced/nsresourcework.c index 26ea1d066e7..b1c6dd86f94 100644 --- a/src/nsresourced/nsresourcework.c +++ b/src/nsresourced/nsresourcework.c @@ -15,6 +15,7 @@ #include "sd-netlink.h" #include "sd-varlink.h" +#include "argv-util.h" #include "bus-polkit.h" #include "env-util.h" #include "fd-util.h" diff --git a/src/oom/oomctl.c b/src/oom/oomctl.c index 79adc014156..3a2ac2a6aa5 100644 --- a/src/oom/oomctl.c +++ b/src/oom/oomctl.c @@ -9,6 +9,7 @@ #include "bus-message-util.h" #include "log.h" #include "main-func.h" +#include "pager.h" #include "pretty-print.h" #include "terminal-util.h" #include "verbs.h" diff --git a/src/path/path.c b/src/path/path.c index 18a88e1c69e..97685d2bd8f 100644 --- a/src/path/path.c +++ b/src/path/path.c @@ -9,6 +9,7 @@ #include "alloc-util.h" #include "build.h" +#include "errno-util.h" #include "log.h" #include "macro.h" #include "main-func.h" diff --git a/src/portable/portabled.c b/src/portable/portabled.c index d94feb34cf6..ddc9935a7d6 100644 --- a/src/portable/portabled.c +++ b/src/portable/portabled.c @@ -8,6 +8,7 @@ #include "alloc-util.h" #include "bus-log-control-api.h" #include "bus-polkit.h" +#include "bus-util.h" #include "common-signal.h" #include "constants.h" #include "daemon-util.h" diff --git a/src/ptyfwd/ptyfwd-tool.c b/src/ptyfwd/ptyfwd-tool.c index 16a49ccdc1b..449c0ee4977 100644 --- a/src/ptyfwd/ptyfwd-tool.c +++ b/src/ptyfwd/ptyfwd-tool.c @@ -12,6 +12,7 @@ #include "pretty-print.h" #include "process-util.h" #include "ptyfwd.h" +#include "signal-util.h" #include "strv.h" static bool arg_quiet = false; diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c index f517d149dd1..7d284ab28e6 100644 --- a/src/resolve/resolvectl.c +++ b/src/resolve/resolvectl.c @@ -5,18 +5,21 @@ #include #include "sd-bus.h" +#include "sd-daemon.h" #include "sd-json.h" #include "sd-netlink.h" #include "sd-varlink.h" #include "af-list.h" #include "alloc-util.h" +#include "argv-util.h" #include "build.h" #include "bus-common-errors.h" #include "bus-error.h" #include "bus-locator.h" #include "bus-map-properties.h" #include "bus-message-util.h" +#include "bus-util.h" #include "dns-domain.h" #include "errno-list.h" #include "escape.h" @@ -31,6 +34,7 @@ #include "pager.h" #include "parse-argument.h" #include "parse-util.h" +#include "polkit-agent.h" #include "pretty-print.h" #include "process-util.h" #include "resolvconf-compat.h" diff --git a/src/rfkill/rfkill.c b/src/rfkill/rfkill.c index 6b216c046f6..28301cd5270 100644 --- a/src/rfkill/rfkill.c +++ b/src/rfkill/rfkill.c @@ -12,6 +12,7 @@ #include "alloc-util.h" #include "device-util.h" +#include "errno-util.h" #include "escape.h" #include "fd-util.h" #include "fileio.h" diff --git a/src/run/run.c b/src/run/run.c index e2b6c98e03a..d03604e4ee7 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -7,10 +7,12 @@ #include #include "sd-bus.h" +#include "sd-daemon.h" #include "sd-event.h" #include "sd-json.h" #include "alloc-util.h" +#include "argv-util.h" #include "ask-password-agent.h" #include "build.h" #include "bus-error.h" diff --git a/src/shared/generator.c b/src/shared/generator.c index 5e3cf2a6cb6..86fcced0984 100644 --- a/src/shared/generator.c +++ b/src/shared/generator.c @@ -4,6 +4,7 @@ #include #include "alloc-util.h" +#include "argv-util.h" #include "cgroup-util.h" #include "dropin.h" #include "escape.h" diff --git a/src/shared/main-func.c b/src/shared/main-func.c new file mode 100644 index 00000000000..c8612183634 --- /dev/null +++ b/src/shared/main-func.c @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#if HAVE_VALGRIND_VALGRIND_H +# include +#endif + +#include "sd-daemon.h" + +#include "argv-util.h" +#include "ask-password-agent.h" +#include "hashmap.h" +#include "main-func.h" +#include "pager.h" +#include "polkit-agent.h" +#include "selinux-util.h" +#include "signal-util.h" + +void main_prepare(int argc, char *argv[]) { + assert_se(argc > 0 && !isempty(argv[0])); + save_argc_argv(argc, argv); +} + +void main_finalize(int r, int exit_status) { + if (r < 0) + (void) sd_notifyf(0, "ERRNO=%i", -r); + (void) sd_notifyf(0, "EXIT_STATUS=%i", exit_status); + ask_password_agent_close(); + polkit_agent_close(); + pager_close(); + mac_selinux_finish(); +} + +int raise_or_exit_status(int ret) { + if (ret < 0) + return EXIT_FAILURE; + if (ret == 0) + return EXIT_SUCCESS; + if (!SIGNAL_VALID(ret)) + return EXIT_FAILURE; + +#if HAVE_VALGRIND_VALGRIND_H + /* If raise() below succeeds, the destructor cleanup_pools() in hashmap.c will never called. */ + if (RUNNING_ON_VALGRIND) + hashmap_trim_pools(); +#endif + + (void) raise(ret); + /* exit with failure if raise() does not immediately abort the program. */ + return EXIT_FAILURE; +} diff --git a/src/shared/main-func.h b/src/shared/main-func.h index 67537555a12..0faaba60883 100644 --- a/src/shared/main-func.h +++ b/src/shared/main-func.h @@ -3,36 +3,19 @@ #include -#if HAVE_VALGRIND_VALGRIND_H -# include -#endif +#include "static-destruct.h" -#include "sd-daemon.h" +void main_prepare(int argc, char *argv[]); -#include "argv-util.h" -#include "ask-password-agent.h" -#include "hashmap.h" -#include "pager.h" -#include "polkit-agent.h" -#include "selinux-util.h" -#include "signal-util.h" -#include "static-destruct.h" +void main_finalize(int r, int exit_status); #define _DEFINE_MAIN_FUNCTION(intro, impl, result_to_exit_status, result_to_return_value) \ int main(int argc, char *argv[]) { \ int r; \ - assert_se(argc > 0 && !isempty(argv[0])); \ - save_argc_argv(argc, argv); \ + main_prepare(argc, argv); \ intro; \ r = impl; \ - if (r < 0) \ - (void) sd_notifyf(0, "ERRNO=%i", -r); \ - (void) sd_notifyf(0, "EXIT_STATUS=%i", \ - result_to_exit_status(r)); \ - ask_password_agent_close(); \ - polkit_agent_close(); \ - pager_close(); \ - mac_selinux_finish(); \ + main_finalize(r, result_to_exit_status(r)); \ static_destruct(); \ return result_to_return_value(r); \ } @@ -56,24 +39,7 @@ static inline int exit_failure_if_nonzero(int result) { #define DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE(impl) \ _DEFINE_MAIN_FUNCTION(,impl(argc, argv), exit_failure_if_nonzero, exit_failure_if_nonzero) -static inline int raise_or_exit_status(int ret) { - if (ret < 0) - return EXIT_FAILURE; - if (ret == 0) - return EXIT_SUCCESS; - if (!SIGNAL_VALID(ret)) - return EXIT_FAILURE; - -#if HAVE_VALGRIND_VALGRIND_H - /* If raise() below succeeds, the destructor cleanup_pools() in hashmap.c will never called. */ - if (RUNNING_ON_VALGRIND) - hashmap_trim_pools(); -#endif - - (void) raise(ret); - /* exit with failure if raise() does not immediately abort the program. */ - return EXIT_FAILURE; -} +int raise_or_exit_status(int ret); /* Negative return values from impl are mapped to EXIT_FAILURE, zero is mapped to EXIT_SUCCESS, * and raise if a positive signal is returned from impl. */ diff --git a/src/shared/meson.build b/src/shared/meson.build index 298dbcf18e9..da1deffe4dc 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -119,6 +119,7 @@ shared_sources = files( 'machine-id-setup.c', 'machine-pool.c', 'macvlan-util.c', + 'main-func.c', 'mkdir-label.c', 'mkfs-util.c', 'module-util.c', diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c index 765d315b73c..250aed060f0 100644 --- a/src/sysext/sysext.c +++ b/src/sysext/sysext.c @@ -11,6 +11,7 @@ #include "sd-bus.h" #include "sd-varlink.h" +#include "argv-util.h" #include "blockdev-util.h" #include "build.h" #include "bus-error.h" diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 3ed29d1026b..55c597e5f9b 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -6,6 +6,7 @@ #include "sd-daemon.h" +#include "argv-util.h" #include "build.h" #include "bus-util.h" #include "capsule-util.h" diff --git a/src/sysupdate/sysupdate.c b/src/sysupdate/sysupdate.c index 3bd91ac0224..8393b35b73d 100644 --- a/src/sysupdate/sysupdate.c +++ b/src/sysupdate/sysupdate.c @@ -3,6 +3,8 @@ #include #include +#include "sd-daemon.h" + #include "build.h" #include "chase.h" #include "conf-files.h" diff --git a/src/sysupdate/updatectl.c b/src/sysupdate/updatectl.c index 64172fe4c37..20476fae880 100644 --- a/src/sysupdate/updatectl.c +++ b/src/sysupdate/updatectl.c @@ -24,6 +24,7 @@ #include "os-util.h" #include "pager.h" #include "path-util.h" +#include "polkit-agent.h" #include "pretty-print.h" #include "strv.h" #include "sysupdate-update-set-flags.h" diff --git a/src/test/test-display-quota.c b/src/test/test-display-quota.c index 68ecfc8d013..0fe9e33956a 100644 --- a/src/test/test-display-quota.c +++ b/src/test/test-display-quota.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "bitfield.h" +#include "errno-util.h" #include "fd-util.h" #include "format-util.h" #include "log.h" diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 5e0fb165a79..8d8495a6e29 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -20,6 +20,7 @@ #include "bus-message-util.h" #include "bus-polkit.h" #include "bus-unit-util.h" +#include "bus-util.h" #include "clock-util.h" #include "conf-files.h" #include "constants.h" diff --git a/src/timesync/wait-sync.c b/src/timesync/wait-sync.c index 4104b013254..fa34138875e 100644 --- a/src/timesync/wait-sync.c +++ b/src/timesync/wait-sync.c @@ -13,6 +13,7 @@ #include "sd-event.h" +#include "errno-util.h" #include "fd-util.h" #include "inotify-util.h" #include "main-func.h" diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c index ebf1e5190cc..c9e9a354a88 100644 --- a/src/udev/udevadm.c +++ b/src/udev/udevadm.c @@ -6,6 +6,7 @@ #include #include "alloc-util.h" +#include "argv-util.h" #include "main-func.h" #include "pretty-print.h" #include "process-util.h" diff --git a/src/userdb/userwork.c b/src/userdb/userwork.c index b030fae84cf..6ce5d57ef3c 100644 --- a/src/userdb/userwork.c +++ b/src/userdb/userwork.c @@ -6,7 +6,9 @@ #include "sd-daemon.h" #include "sd-varlink.h" +#include "argv-util.h" #include "env-util.h" +#include "errno-util.h" #include "fd-util.h" #include "group-record.h" #include "io-util.h" diff --git a/src/varlinkctl/varlinkctl.c b/src/varlinkctl/varlinkctl.c index 7b2ff301aa9..75c656d13cf 100644 --- a/src/varlinkctl/varlinkctl.c +++ b/src/varlinkctl/varlinkctl.c @@ -2,6 +2,7 @@ #include +#include "sd-daemon.h" #include "sd-varlink.h" #include "build.h" diff --git a/src/veritysetup/veritysetup.c b/src/veritysetup/veritysetup.c index 5f92cc90113..35bf5fffb70 100644 --- a/src/veritysetup/veritysetup.c +++ b/src/veritysetup/veritysetup.c @@ -7,6 +7,7 @@ #include "sd-device.h" #include "alloc-util.h" +#include "argv-util.h" #include "cryptsetup-util.h" #include "fileio.h" #include "fstab-util.h" diff --git a/src/vmspawn/vmspawn.c b/src/vmspawn/vmspawn.c index 9e062006ab9..e9713dc1723 100644 --- a/src/vmspawn/vmspawn.c +++ b/src/vmspawn/vmspawn.c @@ -20,6 +20,7 @@ #include "build.h" #include "bus-internal.h" #include "bus-locator.h" +#include "bus-util.h" #include "bus-wait-for-jobs.h" #include "capability-util.h" #include "chase.h" diff --git a/src/volatile-root/volatile-root.c b/src/volatile-root/volatile-root.c index 9ab96504800..f7c482de05c 100644 --- a/src/volatile-root/volatile-root.c +++ b/src/volatile-root/volatile-root.c @@ -7,6 +7,7 @@ #include "chase.h" #include "devnum-util.h" #include "escape.h" +#include "log.h" #include "main-func.h" #include "mkdir.h" #include "mount-util.h"