chiark / gitweb /
Prep v239: Utilize new user_runtime_dir() function
authorSven Eden <yamakuzure@gmx.net>
Wed, 29 Aug 2018 06:33:39 +0000 (08:33 +0200)
committerSven Eden <yamakuzure@gmx.net>
Wed, 29 Aug 2018 06:33:39 +0000 (08:33 +0200)
cb/elogind.cbp
src/login/logind-user.c
src/login/logind.c

index 65da13a703ec4c77b6bf8cf23a9f4819eb8bf052..1ace09eee25ee203f2e1c932f1fb54bed85463d2 100644 (file)
                </Unit>
                <Unit filename="../src/login/eloginctl.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/eloginctl.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/eloginctl.h" />
                <Unit filename="../src/login/elogind-dbus.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/elogind-dbus.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/elogind-dbus.h" />
                <Unit filename="../src/login/elogind.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/elogind.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/elogind.h" />
                <Unit filename="../src/login/inhibit.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/loginctl.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind-acl.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-acl.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-acl.h" />
                <Unit filename="../src/login/logind-action.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-action.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-action.h" />
                <Unit filename="../src/login/logind-button.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-button.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-button.h" />
                <Unit filename="../src/login/logind-core.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind-dbus.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind-device.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-device.h">
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-gperf.c">
-                       <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-device.h" />
                <Unit filename="../src/login/logind-gperf.gperf">
                        <Option target="all" />
                        <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind-inhibit.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-inhibit.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-inhibit.h" />
                <Unit filename="../src/login/logind-seat-dbus.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind-seat.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-seat.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-seat.h" />
                <Unit filename="../src/login/logind-session-dbus.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind-session-device.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-session-device.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-session-device.h" />
                <Unit filename="../src/login/logind-session.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-session.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-session.h" />
                <Unit filename="../src/login/logind-user-dbus.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind-user.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/logind-user.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/logind-user.h" />
                <Unit filename="../src/login/logind-utmp.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/logind.conf.in">
                        <Option target="all" />
                        <Option target="clean" />
                </Unit>
-               <Unit filename="../src/login/logind.h">
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
+               <Unit filename="../src/login/logind.h" />
                <Unit filename="../src/login/meson.build">
                        <Option target="all" />
                        <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/pam_elogind.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/sysfs-show.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
-               </Unit>
-               <Unit filename="../src/login/sysfs-show.h">
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/sysfs-show.h" />
                <Unit filename="../src/login/test-inhibit.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/test-login-shared.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
                <Unit filename="../src/login/test-login-tables.c">
                        <Option compilerVar="CC" />
-                       <Option target="all" />
-                       <Option target="clean" />
                </Unit>
+               <Unit filename="../src/login/user-runtime-dir.c">
+                       <Option compilerVar="CC" />
+               </Unit>
+               <Unit filename="../src/login/user-runtime-dir.h" />
                <Unit filename="../src/shared/acl-util.c">
                        <Option compilerVar="CC" />
                        <Option target="all" />
index 2d27dc8dc909c0d6656b9693a12fa3c731b3eb3a..38a15b224ecbb251aa5bceef5b5425ca13822516 100644 (file)
@@ -1,34 +1,36 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
+//#include <errno.h>
+//#include <string.h>
+//#include <unistd.h>
 #include <stdio_ext.h>
 
 #include "alloc-util.h"
-#include "bus-common-errors.h"
-#include "bus-error.h"
-#include "bus-util.h"
-#include "cgroup-util.h"
+//#include "bus-common-errors.h"
+//#include "bus-error.h"
+//#include "bus-util.h"
+//#include "cgroup-util.h"
 #include "clean-ipc.h"
 #include "escape.h"
 #include "fd-util.h"
 #include "fileio.h"
-#include "format-util.h"
-#include "fs-util.h"
-#include "hashmap.h"
-#include "label.h"
-#include "logind-user.h"
+//#include "format-util.h"
+//#include "fs-util.h"
+//#include "hashmap.h"
+//#include "label.h"
+//#include "logind-user.h"
 #include "mkdir.h"
-#include "parse-util.h"
-#include "path-util.h"
-#include "rm-rf.h"
+//#include "parse-util.h"
+//#include "path-util.h"
+//#include "rm-rf.h"
 #include "special.h"
 #include "stdio-util.h"
 #include "string-table.h"
 #include "unit-name.h"
 #include "user-util.h"
-#include "util.h"
+//#include "util.h"
+/// Additional includes needed by elogind
+#include "user-runtime-dir.h"
 
 int user_new(User **out, Manager *m, uid_t uid, gid_t gid, const char *name) {
         _cleanup_(user_freep) User *u = NULL;
@@ -368,8 +370,17 @@ int user_start(User *u) {
          */
         u->stopping = false;
 
+#if 0 /// elogind has to prepare the XDG_RUNTIME_DIR by itself
         if (!u->started)
                 log_debug("Starting services for new user %s.", u->name);
+#else
+        if (!u->started) {
+                log_debug("Starting services for new user %s.", u->name);
+                r = user_runtime_dir("start", u);
+                if (r < 0)
+                        return r;
+        }
+#endif // 1
 
         /* Save the user data so far, because pam_systemd will read the
          * XDG_RUNTIME_DIR out of it while starting up systemd --user.
@@ -441,6 +452,9 @@ int user_stop(User *u, bool force) {
         /* Stop jobs have already been queued */
         if (u->stopping) {
                 user_save(u);
+#if 1 /// elogind must queue this user again
+                user_add_to_gc_queue(u);
+#endif // 1
                 return r;
         }
 
@@ -469,6 +483,7 @@ int user_stop(User *u, bool force) {
 #if 1 /// elogind must queue this user again
         user_add_to_gc_queue(u);
 #endif // 1
+
         return r;
 }
 
@@ -487,6 +502,13 @@ int user_finalize(User *u) {
                         r = k;
         }
 
+#if 1 /// elogind has to remove the XDG_RUNTIME_DIR by itself
+        /* Kill XDG_RUNTIME_DIR */
+        k = user_runtime_dir("stop", u);
+        if (k < 0)
+                r = k;
+#endif // 1
+
         /* Clean SysV + POSIX IPC objects, but only if this is not a system user. Background: in many setups cronjobs
          * are run in full PAM and thus logind sessions, even if the code run doesn't belong to actual users but to
          * system components. Since enable RemoveIPC= globally for all users, we need to be a bit careful with such
index d87c38181bf98f0a9dd6c1e9051d0c08a0f9463e..db26701dd3944ce431405c4153d3c2dffd7f4e5a 100644 (file)
@@ -39,8 +39,6 @@
 static Manager* manager_unref(Manager *m);
 DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_unref);
 
-#if 0 /// elogind does not support autospawning of vts
-#endif // 0
 static int manager_new(Manager **ret) {
         _cleanup_(manager_unrefp) Manager *m = NULL;
         int r;