chiark / gitweb /
units: make networkd pull in its own .busname unit
[elogind.git] / src / login / logind-core.c
index ace82fe1e5a97e02ee81fea11e29c111fd9f32fd..d5af8dcdc91701b53e1c2fe30ea703b6137c42d4 100644 (file)
@@ -31,6 +31,7 @@
 #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;
@@ -311,7 +312,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) {
-        _cleanup_free_ char *unit = NULL;
+        _cleanup_free_ char *session_name = NULL;
         Session *s;
         int r;
 
@@ -321,11 +322,11 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) {
         if (pid < 1)
                 return -EINVAL;
 
-        r = cg_pid_get_unit(pid, &unit);
+        r = cg_pid_get_session(pid, &session_name);
         if (r < 0)
                 return 0;
 
-        s = hashmap_get(m->session_units, unit);
+        s = hashmap_get(m->sessions, session_name);
         if (!s)
                 return 0;
 
@@ -334,25 +335,17 @@ 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) {
-        _cleanup_free_ char *unit = NULL;
-        User *u;
+        Session *s;
         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;
+        r = manager_get_session_by_pid (m, pid, &s);
+        if (r <= 0)
+                return r;
 
-        *user = u;
+        *user = s->user;
         return 1;
 }