chiark / gitweb /
Prep v239: sync manager_get_user_by_pid() with upstream updates
[elogind.git] / src / login / logind-core.c
index 581f4078a748f4dfedb2ae6093c1399e29c74cef..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>
 #include "user-util.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;
@@ -334,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;
 }
 
@@ -382,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:
@@ -389,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) {
@@ -573,7 +575,7 @@ static bool manager_is_docked(Manager *m) {
 }
 
 static int manager_count_external_displays(Manager *m) {
-        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
+        _cleanup_(udev_enumerate_unrefp) struct udev_enumerate *e = NULL;
         struct udev_list_entry *item = NULL, *first = NULL;
         int r;
         int n = 0;
@@ -592,7 +594,7 @@ static int manager_count_external_displays(Manager *m) {
 
         first = udev_enumerate_get_list_entry(e);
         udev_list_entry_foreach(item, first) {
-                _cleanup_udev_device_unref_ struct udev_device *d = NULL;
+                _cleanup_(udev_device_unrefp) struct udev_device *d = NULL;
                 struct udev_device *p;
                 const char *status, *enabled, *dash, *nn, *i;
                 bool external = false;