summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Eden <yamakuzure@gmx.net>2018-08-29 08:33:39 +0200
committerSven Eden <yamakuzure@gmx.net>2018-08-29 08:33:39 +0200
commit40f140beb3f640c0fa6674478f990d57d10704b4 (patch)
tree38ef8b6aa953a7af15a30bc3d58a9939a0074f89
parent9d94b159df3dd88e2dde006d5d240ce80df068e6 (diff)
Prep v239: Utilize new user_runtime_dir() function
-rw-r--r--cb/elogind.cbp131
-rw-r--r--src/login/logind-user.c54
-rw-r--r--src/login/logind.c2
3 files changed, 56 insertions, 131 deletions
diff --git a/cb/elogind.cbp b/cb/elogind.cbp
index 65da13a70..1ace09eee 100644
--- a/cb/elogind.cbp
+++ b/cb/elogind.cbp
@@ -702,207 +702,112 @@
</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" />
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index 2d27dc8dc..38a15b224 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -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
diff --git a/src/login/logind.c b/src/login/logind.c
index d87c38181..db26701dd 100644
--- a/src/login/logind.c
+++ b/src/login/logind.c
@@ -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;