diff options
author | Martin Pitt <martinpitt@gnome.org> | 2013-03-21 12:53:10 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2013-04-06 18:07:50 -0400 |
commit | c1b42bd64fab61143c2d8806d7d935f8b4d9e39b (patch) | |
tree | 7ef488334fa7100280611d08fcbf1cce2c78361d /src/libaccountsservice | |
parent | 12d54cc7b7572df9e3c0c7de5863143243b57dfe (diff) | |
download | accountsservice-c1b42bd64fab61143c2d8806d7d935f8b4d9e39b.tar.gz |
Check for logind, not for systemd
It is possible to build systemd without logind, in which case sd_booted() would
succeed. Check for /run/systemd/seats to test for logind instead, as
recommended by systemd upstream.
For details, see:
<https://mail.gnome.org/archives/desktop-devel-list/2013-March/msg00092.html
Drop the now unnecessary linking against libsystemd-daemon.
https://bugs.freedesktop.org/show_bug.cgi?id=62586
Diffstat (limited to 'src/libaccountsservice')
-rw-r--r-- | src/libaccountsservice/act-user-manager.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/libaccountsservice/act-user-manager.c b/src/libaccountsservice/act-user-manager.c index a1a4c3a..502df0e 100644 --- a/src/libaccountsservice/act-user-manager.c +++ b/src/libaccountsservice/act-user-manager.c @@ -42,8 +42,10 @@ #include <gio/gunixinputstream.h> #ifdef WITH_SYSTEMD -#include <systemd/sd-daemon.h> #include <systemd/sd-login.h> + +/* check if logind is running */ +#define LOGIND_RUNNING() (access("/run/systemd/seats/", F_OK) >= 0) #endif #include "act-user-manager.h" @@ -392,7 +394,7 @@ session_is_login_window (ActUserManager *manager, const char *session_id) { #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { return _systemd_session_is_login_window (manager, session_id); } #endif @@ -477,7 +479,7 @@ act_user_manager_can_switch (ActUserManager *manager) #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { return _can_activate_systemd_sessions (manager); } #endif @@ -513,7 +515,7 @@ act_user_manager_activate_user_session (ActUserManager *manager, } #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { return activate_systemd_session_id (manager, manager->priv->seat.id, ssid); } #endif @@ -664,7 +666,7 @@ static void get_seat_id_for_current_session (ActUserManager *manager) { #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { _get_systemd_seat_id (manager); return; } @@ -1030,7 +1032,7 @@ static void get_current_session_id (ActUserManager *manager) { #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { _get_current_systemd_session_id (manager); return; } @@ -1091,7 +1093,7 @@ get_proxy_for_new_session (ActUserManagerNewSession *new_session) { GError *error = NULL; #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { new_session->state++; load_new_session_incrementally (new_session); return; @@ -1184,7 +1186,7 @@ static void get_uid_for_new_session (ActUserManagerNewSession *new_session) { #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { _get_uid_for_new_systemd_session (new_session); return; } @@ -1461,7 +1463,7 @@ static void get_x11_display_for_new_session (ActUserManagerNewSession *new_session) { #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { _get_x11_display_for_new_systemd_session (new_session); return; } @@ -1819,7 +1821,7 @@ get_seat_proxy (ActUserManager *manager) GError *error = NULL; #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { _monitor_for_systemd_session_changes (manager); manager->priv->seat.state++; return; @@ -1893,7 +1895,7 @@ get_session_proxy (ActUserManager *manager) g_debug ("get_session_proxy"); #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { manager->priv->seat.state++; queue_load_seat_incrementally (manager); return; @@ -2317,7 +2319,7 @@ static void load_sessions (ActUserManager *manager) { #ifdef WITH_SYSTEMD - if (sd_booted () > 0) { + if (LOGIND_RUNNING()) { reload_systemd_sessions (manager); maybe_set_is_loaded (manager); return; |