From: Daan De Meyer Date: Fri, 18 Apr 2025 21:53:19 +0000 (+0200) Subject: login: Remove circular header dependencies X-Git-Tag: v258-rc1~756^2~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=214c93c84c8745f0b5c91e1a858a178c41865dc5;p=thirdparty%2Fsystemd.git login: Remove circular header dependencies --- diff --git a/src/login/logind-action.c b/src/login/logind-action.c index c663d2493d7..9d1e392d7bc 100644 --- a/src/login/logind-action.c +++ b/src/login/logind-action.c @@ -11,6 +11,7 @@ #include "bus-util.h" #include "conf-parser.h" #include "format-util.h" +#include "logind.h" #include "logind-action.h" #include "logind-dbus.h" #include "logind-seat-dbus.h" diff --git a/src/login/logind-action.h b/src/login/logind-action.h index 800f4e83099..e251701a8d2 100644 --- a/src/login/logind-action.h +++ b/src/login/logind-action.h @@ -2,6 +2,8 @@ #pragma once #include "conf-parser.h" +#include "logind-inhibit.h" +#include "sleep-config.h" typedef enum HandleAction { HANDLE_IGNORE, @@ -41,10 +43,6 @@ typedef enum HandleActionSleepMask { #define HANDLE_ACTION_SLEEP_MASK_DEFAULT (HANDLE_SLEEP_SUSPEND_THEN_HIBERNATE_MASK|HANDLE_SLEEP_SUSPEND_MASK|HANDLE_SLEEP_HIBERNATE_MASK) -#include "logind-inhibit.h" -#include "logind.h" -#include "sleep-config.h" - static inline bool handle_action_valid(HandleAction a) { return a >= 0 && a < _HANDLE_ACTION_MAX; } diff --git a/src/login/logind-brightness.h b/src/login/logind-brightness.h index f1c77757a88..d0e8580032c 100644 --- a/src/login/logind-brightness.h +++ b/src/login/logind-brightness.h @@ -4,6 +4,6 @@ #include "sd-bus.h" #include "sd-device.h" -#include "logind.h" +typedef struct Manager Manager; int manager_write_brightness(Manager *m, sd_device *device, uint32_t brightness, sd_bus_message *message); diff --git a/src/login/logind-button.c b/src/login/logind-button.c index 2b6b1dc4638..4d4853b570a 100644 --- a/src/login/logind-button.c +++ b/src/login/logind-button.c @@ -11,6 +11,7 @@ #include "alloc-util.h" #include "async.h" #include "fd-util.h" +#include "logind.h" #include "logind-button.h" #include "logind-dbus.h" #include "string-util.h" diff --git a/src/login/logind-button.h b/src/login/logind-button.h index 125e49dd086..4af54cb33d8 100644 --- a/src/login/logind-button.h +++ b/src/login/logind-button.h @@ -1,9 +1,11 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -typedef struct Button Button; +#include -#include "logind.h" +#include "sd-event.h" + +typedef struct Manager Manager; typedef enum ButtonModifierMask { BUTTON_MODIFIER_NONE = 0, @@ -19,7 +21,7 @@ typedef enum ButtonModifierMask { #define BUTTON_MODIFIER_HAS_CTRL(modifier) (((modifier) & (BUTTON_MODIFIER_LEFT_CTRL|BUTTON_MODIFIER_RIGHT_CTRL)) != 0) #define BUTTON_MODIFIER_HAS_ALT(modifier) (((modifier) & (BUTTON_MODIFIER_LEFT_ALT|BUTTON_MODIFIER_RIGHT_ALT)) != 0) -struct Button { +typedef struct Button { Manager *manager; sd_event_source *io_event_source; @@ -33,7 +35,7 @@ struct Button { bool lid_closed; bool docked; -}; +} Button; Button* button_new(Manager *m, const char *name); Button *button_free(Button *b); diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 16192765206..80e777b5054 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -20,6 +20,11 @@ #include "fd-util.h" #include "limits-util.h" #include "logind.h" +#include "logind-button.h" +#include "logind-device.h" +#include "logind-seat.h" +#include "logind-session.h" +#include "logind-user.h" #include "logind-utmp.h" #include "parse-util.h" #include "path-util.h" diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 37eb842e20a..c6eac67c0ab 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -32,12 +32,15 @@ #include "fileio.h" #include "format-util.h" #include "fs-util.h" +#include "login-util.h" #include "logind.h" #include "logind-action.h" #include "logind-dbus.h" #include "logind-polkit.h" +#include "logind-seat.h" #include "logind-seat-dbus.h" #include "logind-session-dbus.h" +#include "logind-user.h" #include "logind-user-dbus.h" #include "logind-utmp.h" #include "mkdir-label.h" diff --git a/src/login/logind-dbus.h b/src/login/logind-dbus.h index afbf523edec..0cf39c4ae5c 100644 --- a/src/login/logind-dbus.h +++ b/src/login/logind-dbus.h @@ -4,10 +4,13 @@ #include "sd-bus.h" #include "bus-object.h" -#include "logind-action.h" #include "logind-session.h" -#include "logind-user.h" -#include "logind.h" +#include "macro.h" + +typedef struct Manager Manager; +typedef struct User User; +typedef struct Seat Seat; +typedef struct HandleActionData HandleActionData; int manager_get_session_from_creds(Manager *m, sd_bus_message *message, const char *name, sd_bus_error *error, Session **ret); int manager_get_user_from_creds(Manager *m, sd_bus_message *message, uid_t uid, sd_bus_error *error, User **ret); diff --git a/src/login/logind-device.c b/src/login/logind-device.c index 376cd0d42fd..5f6b58b8402 100644 --- a/src/login/logind-device.c +++ b/src/login/logind-device.c @@ -3,8 +3,11 @@ #include #include "alloc-util.h" +#include "logind.h" #include "logind-device.h" +#include "logind-seat.h" #include "logind-seat-dbus.h" +#include "logind-session-device.h" Device* device_new(Manager *m, const char *sysfs, bool master) { Device *d; diff --git a/src/login/logind-device.h b/src/login/logind-device.h index f96c4dbfb69..e6afe378a23 100644 --- a/src/login/logind-device.h +++ b/src/login/logind-device.h @@ -1,11 +1,13 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -typedef struct Device Device; - #include "list.h" -#include "logind-seat.h" -#include "logind-session-device.h" +#include "time-util.h" + +typedef struct Device Device; +typedef struct Manager Manager; +typedef struct Seat Seat; +typedef struct SessionDevice SessionDevice; struct Device { Manager *manager; diff --git a/src/login/logind-gperf.gperf b/src/login/logind-gperf.gperf index f09387e6a80..bd64b8352ed 100644 --- a/src/login/logind-gperf.gperf +++ b/src/login/logind-gperf.gperf @@ -7,6 +7,7 @@ _Pragma("GCC diagnostic ignored \"-Wzero-as-null-pointer-constant\"") #include #include "conf-parser.h" #include "logind.h" +#include "logind-user.h" %} struct ConfigPerfItem; %null_strings diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c index c0ae173783a..86bae8f0b7c 100644 --- a/src/login/logind-inhibit.c +++ b/src/login/logind-inhibit.c @@ -17,6 +17,7 @@ #include "format-util.h" #include "fs-util.h" #include "io-util.h" +#include "logind.h" #include "logind-dbus.h" #include "logind-inhibit.h" #include "mkdir-label.h" diff --git a/src/login/logind-inhibit.h b/src/login/logind-inhibit.h index ae91e2d402e..1f115410f14 100644 --- a/src/login/logind-inhibit.h +++ b/src/login/logind-inhibit.h @@ -1,9 +1,13 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include "sd-event.h" + #include "pidref.h" +#include "time-util.h" typedef struct Inhibitor Inhibitor; +typedef struct Manager Manager; typedef enum InhibitWhat { INHIBIT_SHUTDOWN = 1 << 0, @@ -26,8 +30,6 @@ typedef enum InhibitMode { _INHIBIT_MODE_INVALID = -EINVAL, } InhibitMode; -#include "logind.h" - struct Inhibitor { Manager *manager; diff --git a/src/login/logind-polkit.c b/src/login/logind-polkit.c index 5b6c256a085..1aa76e225d6 100644 --- a/src/login/logind-polkit.c +++ b/src/login/logind-polkit.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "bus-polkit.h" +#include "logind.h" #include "logind-polkit.h" #include "user-util.h" diff --git a/src/login/logind-polkit.h b/src/login/logind-polkit.h index 9ec01a3c45a..7619ce2d90f 100644 --- a/src/login/logind-polkit.h +++ b/src/login/logind-polkit.h @@ -4,6 +4,7 @@ #include "sd-bus.h" #include "bus-object.h" -#include "logind.h" + +typedef struct Manager Manager; int check_polkit_chvt(sd_bus_message *message, Manager *manager, sd_bus_error *error); diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index 18acbf25b4f..3c027e8fe1b 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -13,6 +13,7 @@ #include "logind-seat-dbus.h" #include "logind-seat.h" #include "logind-session-dbus.h" +#include "logind-user.h" #include "logind.h" #include "strv.h" #include "user-util.h" diff --git a/src/login/logind-seat-dbus.h b/src/login/logind-seat-dbus.h index f4bd78e24bd..782ee01c60a 100644 --- a/src/login/logind-seat-dbus.h +++ b/src/login/logind-seat-dbus.h @@ -4,7 +4,9 @@ #include "sd-bus.h" #include "bus-object.h" -#include "logind-seat.h" +#include "macro.h" + +typedef struct Seat Seat; extern const BusObjectImplementation seat_object; diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index 50c2b21b47e..06f32ecec5a 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -14,9 +14,14 @@ #include "fileio.h" #include "format-util.h" #include "fs-util.h" +#include "logind.h" +#include "logind-device.h" #include "logind-seat-dbus.h" #include "logind-seat.h" +#include "logind-session.h" #include "logind-session-dbus.h" +#include "logind-session-device.h" +#include "logind-user.h" #include "mkdir-label.h" #include "parse-util.h" #include "path-util.h" diff --git a/src/login/logind-seat.h b/src/login/logind-seat.h index 76a69e6517b..4c4a6fa6bd5 100644 --- a/src/login/logind-seat.h +++ b/src/login/logind-seat.h @@ -1,10 +1,15 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -typedef struct Seat Seat; - #include "list.h" -#include "logind-session.h" +#include "memory-util.h" +#include "string-util.h" +#include "time-util.h" + +typedef struct Device Device; +typedef struct Manager Manager; +typedef struct Seat Seat; +typedef struct Session Session; struct Seat { Manager *manager; diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index dbbadfedf7e..af5e04bce4e 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -15,10 +15,12 @@ #include "logind-brightness.h" #include "logind-dbus.h" #include "logind-polkit.h" +#include "logind-seat.h" #include "logind-seat-dbus.h" #include "logind-session-dbus.h" #include "logind-session-device.h" #include "logind-session.h" +#include "logind-user.h" #include "logind-user-dbus.h" #include "logind.h" #include "path-util.h" diff --git a/src/login/logind-session-dbus.h b/src/login/logind-session-dbus.h index 091ad26292f..175e29a93fc 100644 --- a/src/login/logind-session-dbus.h +++ b/src/login/logind-session-dbus.h @@ -4,7 +4,10 @@ #include "sd-bus.h" #include "bus-object.h" -#include "logind-session.h" +#include "macro.h" + +typedef struct Manager Manager; +typedef struct Session Session; extern const BusObjectImplementation session_object; diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c index 1a22a77e8ea..984c1c1eeb6 100644 --- a/src/login/logind-session-device.c +++ b/src/login/logind-session-device.c @@ -15,6 +15,10 @@ #include "daemon-util.h" #include "device-util.h" #include "fd-util.h" +#include "logind.h" +#include "logind-device.h" +#include "logind-seat.h" +#include "logind-session.h" #include "logind-session-dbus.h" #include "logind-session-device.h" #include "missing_drm.h" diff --git a/src/login/logind-session-device.h b/src/login/logind-session-device.h index 1c6f12f21b1..52cea0f74c9 100644 --- a/src/login/logind-session-device.h +++ b/src/login/logind-session-device.h @@ -1,18 +1,19 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -typedef enum DeviceType DeviceType; -typedef struct SessionDevice SessionDevice; - #include "list.h" -#include "logind.h" +#include "memory-util.h" -enum DeviceType { +typedef struct Device Device; +typedef struct Session Session; +typedef struct SessionDevice SessionDevice; + +typedef enum DeviceType { DEVICE_TYPE_UNKNOWN, DEVICE_TYPE_DRM, DEVICE_TYPE_EVDEV, DEVICE_TYPE_HIDRAW, -}; +} DeviceType; struct SessionDevice { Session *session; diff --git a/src/login/logind-session.c b/src/login/logind-session.c index 7def7237233..75ceb650a4a 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -24,10 +24,15 @@ #include "format-util.h" #include "fs-util.h" #include "io-util.h" +#include "login-util.h" +#include "logind.h" #include "logind-dbus.h" +#include "logind-seat.h" #include "logind-seat-dbus.h" #include "logind-session-dbus.h" +#include "logind-session-device.h" #include "logind-session.h" +#include "logind-user.h" #include "logind-user-dbus.h" #include "logind-varlink.h" #include "mkdir-label.h" diff --git a/src/login/logind-session.h b/src/login/logind-session.h index 56ca70da848..923723479cc 100644 --- a/src/login/logind-session.h +++ b/src/login/logind-session.h @@ -1,14 +1,20 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -typedef struct Session Session; -typedef enum KillWhom KillWhom; +#include "sd-bus.h" +#include "sd-event.h" +#include "sd-varlink.h" +#include "hashmap.h" #include "list.h" -#include "login-util.h" -#include "logind-user.h" #include "pidref.h" #include "string-util.h" +#include "time-util.h" + +typedef struct Manager Manager; +typedef struct Seat Seat; +typedef struct Session Session; +typedef struct User User; typedef enum SessionState { SESSION_OPENING, /* Session scope is being created */ @@ -85,12 +91,12 @@ typedef enum SessionType { #define SESSION_TYPE_IS_GRAPHICAL(type) IN_SET(type, SESSION_X11, SESSION_WAYLAND, SESSION_MIR) -enum KillWhom { +typedef enum KillWhom { KILL_LEADER, KILL_ALL, _KILL_WHOM_MAX, _KILL_WHOM_INVALID = -EINVAL, -}; +} KillWhom; typedef enum TTYValidity { TTY_FROM_PAM, diff --git a/src/login/logind-user-dbus.h b/src/login/logind-user-dbus.h index ba530bede29..33f810f7f54 100644 --- a/src/login/logind-user-dbus.h +++ b/src/login/logind-user-dbus.h @@ -3,7 +3,10 @@ #include "sd-bus.h" -#include "logind-user.h" +#include "bus-object.h" +#include "macro.h" + +typedef struct User User; extern const BusObjectImplementation user_object; diff --git a/src/login/logind-user.c b/src/login/logind-user.c index 276d5b86f58..1ef32188263 100644 --- a/src/login/logind-user.c +++ b/src/login/logind-user.c @@ -19,7 +19,9 @@ #include "hashmap.h" #include "label-util.h" #include "limits-util.h" +#include "logind.h" #include "logind-dbus.h" +#include "logind-seat.h" #include "logind-user-dbus.h" #include "logind-user.h" #include "mkdir-label.h" diff --git a/src/login/logind-user.h b/src/login/logind-user.h index 5c82f490f2d..88b5d06bdfa 100644 --- a/src/login/logind-user.h +++ b/src/login/logind-user.h @@ -1,13 +1,16 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -typedef struct User User; +#include "sd-event.h" #include "conf-parser.h" #include "list.h" -#include "logind.h" #include "user-record.h" +typedef struct Manager Manager; +typedef struct Session Session; +typedef struct User User; + typedef enum UserState { USER_OFFLINE, /* Not logged in at all */ USER_OPENING, /* Is logging in */ diff --git a/src/login/logind-utmp.c b/src/login/logind-utmp.c index 47a293914ba..228bcf97d11 100644 --- a/src/login/logind-utmp.c +++ b/src/login/logind-utmp.c @@ -1,5 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include "log.h" +#include "logind.h" +#include "logind-session.h" #include "logind-utmp.h" #include "path-util.h" #include "process-util.h" diff --git a/src/login/logind-utmp.h b/src/login/logind-utmp.h index 1358e27840f..5309132c778 100644 --- a/src/login/logind-utmp.h +++ b/src/login/logind-utmp.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once -#include "logind.h" +typedef struct Manager Manager; int manager_read_utmp(Manager *m); void manager_connect_utmp(Manager *m); diff --git a/src/login/logind-varlink.c b/src/login/logind-varlink.c index ce2b48cdc14..b8181c76f99 100644 --- a/src/login/logind-varlink.c +++ b/src/login/logind-varlink.c @@ -6,7 +6,9 @@ #include "json-util.h" #include "logind.h" #include "logind-dbus.h" +#include "logind-seat.h" #include "logind-session-dbus.h" +#include "logind-user.h" #include "logind-varlink.h" #include "terminal-util.h" #include "user-util.h" diff --git a/src/login/logind-varlink.h b/src/login/logind-varlink.h index bcf2af4fedd..3a8e43d9d9c 100644 --- a/src/login/logind-varlink.h +++ b/src/login/logind-varlink.h @@ -3,8 +3,8 @@ #include "sd-bus.h" -#include "logind.h" -#include "logind-session.h" +typedef struct Manager Manager; +typedef struct Session Session; int manager_varlink_init(Manager *m); void manager_varlink_done(Manager *m); diff --git a/src/login/logind.c b/src/login/logind.c index f1e2ea3c461..e07b9e52965 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -25,9 +25,14 @@ #include "format-util.h" #include "fs-util.h" #include "logind.h" +#include "logind-button.h" #include "logind-dbus.h" +#include "logind-device.h" +#include "logind-seat.h" #include "logind-seat-dbus.h" #include "logind-session-dbus.h" +#include "logind-session-device.h" +#include "logind-user.h" #include "logind-user-dbus.h" #include "logind-utmp.h" #include "logind-varlink.h" diff --git a/src/login/logind.h b/src/login/logind.h index 35d4e9c257c..7ae30c5b63b 100644 --- a/src/login/logind.h +++ b/src/login/logind.h @@ -13,18 +13,18 @@ #include "conf-parser.h" #include "hashmap.h" #include "list.h" +#include "logind-action.h" #include "set.h" #include "time-util.h" #include "user-record.h" -typedef struct Manager Manager; - -#include "logind-action.h" -#include "logind-button.h" -#include "logind-device.h" -#include "logind-inhibit.h" +typedef struct Button Button; +typedef struct Device Device; +typedef struct Seat Seat; +typedef struct Session Session; +typedef struct User User; -struct Manager { +typedef struct Manager { sd_event *event; sd_bus *bus; @@ -150,7 +150,7 @@ struct Manager { dual_timestamp init_ts; sd_varlink_server *varlink_server; -}; +} Manager; void manager_reset_config(Manager *m); int manager_parse_config_file(Manager *m); diff --git a/src/login/test-login-tables.c b/src/login/test-login-tables.c index 9be781ce2dc..76b62aa621e 100644 --- a/src/login/test-login-tables.c +++ b/src/login/test-login-tables.c @@ -2,6 +2,7 @@ #include "logind-action.h" #include "logind-session.h" +#include "logind-user.h" #include "sleep-config.h" #include "test-tables.h" #include "tests.h"