X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogin%2Flogind-core.c;h=277e26255b989e6e6a187d50096e89d97f729dc9;hp=0f4ac9fb81a82666ea00a0b36aa06343ff537686;hb=9eb822a5a6b67eb82909f0d68213afbfcee6e93e;hpb=0a1beeb64207eaa88ab9236787b1cbc2f704ae14 diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 0f4ac9fb8..277e26255 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -20,20 +20,18 @@ ***/ #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" #include "logind.h" +#include "terminal-util.h" int manager_add_device(Manager *m, const char *sysfs, bool master, Device **_device) { Device *d; @@ -101,7 +99,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) @@ -185,44 +183,6 @@ int manager_add_button(Manager *m, const char *name, Button **_button) { return 0; } -int manager_watch_busname(Manager *m, const char *name) { - char *n; - int r; - - assert(m); - assert(name); - - if (set_get(m->busnames, (char*) name)) - return 0; - - n = strdup(name); - if (!n) - return -ENOMEM; - - r = set_put(m->busnames, n); - if (r < 0) { - free(n); - return r; - } - - return 0; -} - -void manager_drop_busname(Manager *m, const char *name) { - Session *session; - Iterator i; - - assert(m); - assert(name); - - /* keep it if the name still owns a controller */ - HASHMAP_FOREACH(session, m->sessions, i) - if (session_is_controller(session, name)) - return; - - free(set_remove(m->busnames, (char*) name)); -} - int manager_process_seat_device(Manager *m, struct udev_device *d) { Device *device; int r; @@ -314,7 +274,12 @@ 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 _cleanup_free_ char *unit = NULL; +#else + _cleanup_free_ char *session_name = NULL; +#endif Session *s; int r; @@ -324,11 +289,20 @@ 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 r = cg_pid_get_unit(pid, &unit); if (r < 0) return 0; s = hashmap_get(m->session_units, unit); +#else + r = cg_pid_get_session(pid, &session_name); + if (r < 0) + return 0; + + s = hashmap_get(m->sessions, session_name); +#endif if (!s) return 0; @@ -337,8 +311,13 @@ 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 _cleanup_free_ char *unit = NULL; User *u; +#else + Session *s; +#endif int r; assert(m); @@ -347,6 +326,8 @@ 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 r = cg_pid_get_slice(pid, &unit); if (r < 0) return 0; @@ -356,6 +337,14 @@ int manager_get_user_by_pid(Manager *m, pid_t pid, User **user) { return 0; *user = u; +#else + r = manager_get_session_by_pid (m, pid, &s); + if (r <= 0) + return r; + + *user = s->user; +#endif // 0 + return 1; } @@ -414,6 +403,8 @@ bool manager_shall_kill(Manager *m, const char *user) { return strv_contains(m->kill_only_users, user); } +/// UNNEEDED by elogind +#if 0 static int vt_is_busy(unsigned int vtnr) { struct vt_stat vt_stat; int r = 0; @@ -478,6 +469,7 @@ int manager_spawn_autovt(Manager *m, unsigned int vtnr) { return r; } +#endif // 0 bool manager_is_docked(Manager *m) { Iterator i; @@ -551,7 +543,7 @@ bool manager_is_docked_or_multiple_displays(Manager *m) { * assume that we are docked. */ n = manager_count_displays(m); if (n < 0) - log_warning_errno(-n, "Display counting failed: %m"); + log_warning_errno(n, "Display counting failed: %m"); else if (n > 1) { log_debug("Multiple (%i) displays connected.", n); return true;