</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" />
/* 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;
*/
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.
/* 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;
}
#if 1 /// elogind must queue this user again
user_add_to_gc_queue(u);
#endif // 1
+
return r;
}
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