chiark / gitweb /
Prep v239: sync manager_get_user_by_pid() with upstream updates
[elogind.git] / src / login / logind-core.c
index 3775c300b0d4fc77450d5f378149283e36889f6f..eecf20e9e83808bd41ca88f61feafba2ac211458 100644 (file)
@@ -1,9 +1,4 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
-/***
-  This file is part of systemd.
-
-  Copyright 2011 Lennart Poettering
-***/
 
 #include <fcntl.h>
 #include <pwd.h>
 void manager_reset_config(Manager *m) {
         assert(m);
 
+#if 0 /// elogind does not support autospawning of vts
         m->n_autovts = 6;
         m->reserve_vt = 6;
+#endif // 0
         m->remove_ipc = true;
         m->inhibit_delay_max = 5 * USEC_PER_SEC;
         m->handle_power_key = HANDLE_POWEROFF;
@@ -336,25 +333,28 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **ret) {
         s = hashmap_get(m->session_units, unit);
         if (!s)
                 goto not_found;
-
-        if (ret)
-                *ret = s;
 #else
         log_debug_elogind("Searching session for PID %u", pid);
         r = cg_pid_get_session(pid, &session_name);
         if (r < 0)
-                return 0;
+                goto not_found;
 
         s = hashmap_get(m->sessions, session_name);
         log_debug_elogind("Session Name \"%s\" -> Session \"%s\"",
                           session_name, s && s->id ? s->id : "NULL");
+        if (NULL == s)
+                goto not_found;
 #endif // 0
 
+        if (ret)
+                *ret = s;
+
         return 1;
 
 not_found:
         if (ret)
                 *ret = NULL;
+
         return 0;
 }
 
@@ -384,6 +384,15 @@ int manager_get_user_by_pid(Manager *m, pid_t pid, User **ret) {
         if (ret)
                 *ret = u;
 
+#else
+        r = manager_get_session_by_pid (m, pid, &s);
+        if (r <= 0)
+                goto not_found;
+
+        if (ret)
+                *ret =  s->user;
+#endif // 0
+
         return 1;
 
 not_found:
@@ -391,15 +400,6 @@ not_found:
                 *ret = NULL;
 
         return 0;
-#else
-        r = manager_get_session_by_pid (m, pid, &s);
-        if (r <= 0)
-                return r;
-        if (ret)
-                *ret = u;
-
-        *user = s->user;
-#endif // 0
 }
 
 int manager_get_idle_hint(Manager *m, dual_timestamp *t) {