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=67b03623acccb20dd24f11a0a9053403e94bc864;hp=88694f9bac1beec8b0d8ff8552e8243289c82624;hb=08e1896fb7a00a758c3a71a99e54f0ff69da2fbd;hpb=da927ba997d68401563b927f92e6e40e021a8e5c diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 88694f9ba..67b03623a 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -20,16 +20,13 @@ ***/ #include -#include #include #include #include -#include #include #include "strv.h" #include "cgroup-util.h" -#include "audit.h" #include "bus-util.h" #include "bus-error.h" #include "udev-util.h" @@ -101,7 +98,7 @@ int manager_add_user(Manager *m, uid_t uid, gid_t gid, const char *name, User ** assert(m); assert(name); - u = hashmap_get(m->users, ULONG_TO_PTR((unsigned long) uid)); + u = hashmap_get(m->users, UID_TO_PTR(uid)); if (!u) { u = user_new(m, uid, gid, name); if (!u) @@ -314,49 +311,24 @@ int manager_process_button_device(Manager *m, struct udev_device *d) { } int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { - _cleanup_free_ char *unit = NULL; - Session *s; - int r; - assert(m); assert(session); - if (pid < 1) - return -EINVAL; - - r = cg_pid_get_unit(pid, &unit); - if (r < 0) - return 0; - - s = hashmap_get(m->session_units, unit); - if (!s) - return 0; - - *session = s; - return 1; + /* Without cgroups, we have no way to map from pid to + session. */ + return 0; } int manager_get_user_by_pid(Manager *m, pid_t pid, User **user) { - _cleanup_free_ char *unit = NULL; - User *u; - int r; - assert(m); assert(user); if (pid < 1) return -EINVAL; - r = cg_pid_get_slice(pid, &unit); - if (r < 0) - return 0; - - u = hashmap_get(m->user_units, unit); - if (!u) - return 0; - - *user = u; - return 1; + /* Without cgroups, we have no way to map from pid to + user. */ + return 0; } int manager_get_idle_hint(Manager *m, dual_timestamp *t) { @@ -439,46 +411,6 @@ static int vt_is_busy(unsigned int vtnr) { return r; } -int manager_spawn_autovt(Manager *m, unsigned int vtnr) { - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - char name[sizeof("autovt@tty.service") + DECIMAL_STR_MAX(unsigned int)]; - int r; - - assert(m); - assert(vtnr >= 1); - - if (vtnr > m->n_autovts && - vtnr != m->reserve_vt) - return 0; - - if (vtnr != m->reserve_vt) { - /* If this is the reserved TTY, we'll start the getty - * on it in any case, but otherwise only if it is not - * busy. */ - - r = vt_is_busy(vtnr); - if (r < 0) - return r; - else if (r > 0) - return -EBUSY; - } - - snprintf(name, sizeof(name), "autovt@tty%u.service", vtnr); - r = sd_bus_call_method( - m->bus, - "org.freedesktop.systemd1", - "/org/freedesktop/systemd1", - "org.freedesktop.systemd1.Manager", - "StartUnit", - &error, - NULL, - "ss", name, "fail"); - if (r < 0) - log_error("Failed to start %s: %s", name, bus_error_message(&error, r)); - - return r; -} - bool manager_is_docked(Manager *m) { Iterator i; Button *b;