X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogin%2Flogind-core.c;h=0e7786f10395f373bca521b9bfa8a694eee0babe;hp=4ab66cd9bf0c3199791983fdfa01d6991cbe0fe9;hb=d49b80008fd8c0952da67bee0dc8a1314f29b8a7;hpb=da4b83e77bc603745cf4a365d7f013301ef7fa89 diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 4ab66cd9b..0e7786f10 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -139,7 +137,7 @@ int manager_add_user_by_uid(Manager *m, uid_t uid, User **_user) { errno = 0; p = getpwuid(uid); if (!p) - return errno ? -errno : -ENOENT; + return errno > 0 ? -errno : -ENOENT; return manager_add_user(m, uid, p->pw_gid, p->pw_name, _user); } @@ -278,8 +276,7 @@ int manager_process_button_device(Manager *m, struct udev_device *d) { } int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { -/// elogind does not support systemd units, but its own session system -#if 0 +#if 0 /// elogind does not support systemd units, but its own session system _cleanup_free_ char *unit = NULL; #else _cleanup_free_ char *session_name = NULL; @@ -292,8 +289,7 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { if (pid < 1) return -EINVAL; -/// elogind does not support systemd units, but its own session system -#if 0 +#if 0 /// elogind does not support systemd units, but its own session system r = cg_pid_get_unit(pid, &unit); if (r < 0) return 0; @@ -318,8 +314,7 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { } int manager_get_user_by_pid(Manager *m, pid_t pid, User **user) { -/// elogind does not support systemd units, but its own session system -#if 0 +#if 0 /// elogind does not support systemd units, but its own session system _cleanup_free_ char *unit = NULL; User *u; #else @@ -333,8 +328,7 @@ int manager_get_user_by_pid(Manager *m, pid_t pid, User **user) { if (pid < 1) return -EINVAL; -/// elogind does not support systemd units, but its own session system -#if 0 +#if 0 /// elogind does not support systemd units, but its own session system r = cg_pid_get_slice(pid, &unit); if (r < 0) return 0; @@ -351,7 +345,6 @@ int manager_get_user_by_pid(Manager *m, pid_t pid, User **user) { *user = s->user; #endif // 0 - return 1; } @@ -398,20 +391,19 @@ bool manager_shall_kill(Manager *m, const char *user) { assert(m); assert(user); - if (!m->kill_user_processes) + if (!m->kill_exclude_users && streq(user, "root")) return false; if (strv_contains(m->kill_exclude_users, user)) return false; - if (strv_isempty(m->kill_only_users)) - return true; + if (!strv_isempty(m->kill_only_users)) + return strv_contains(m->kill_only_users, user); - return strv_contains(m->kill_only_users, user); + return m->kill_user_processes; } -/// UNNEEDED by elogind -#if 0 +#if 0 /// UNNEEDED by elogind static int vt_is_busy(unsigned int vtnr) { struct vt_stat vt_stat; int r = 0; @@ -438,7 +430,7 @@ static int vt_is_busy(unsigned int vtnr) { } int manager_spawn_autovt(Manager *m, unsigned int vtnr) { - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; char name[sizeof("autovt@tty.service") + DECIMAL_STR_MAX(unsigned int)]; int r; @@ -466,7 +458,7 @@ int manager_spawn_autovt(Manager *m, unsigned int vtnr) { m->bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", - "org.freedesktop.systemd1.Manager", + "org.freedesktop.systemd.Manager", "StartUnit", &error, NULL, @@ -533,7 +525,7 @@ static int manager_count_external_displays(Manager *m) { continue; /* Ignore internal displays: the type is encoded in - * the sysfs name, as the second dash seperated item + * the sysfs name, as the second dash separated item * (the first is the card name, the last the connector * number). We implement a whitelist of external * displays here, rather than a whitelist, to ensure