bool fresh = r > 0;
if (!MANAGER_IS_TEST_RUN(m)) {
- (void) mkdir_p_label("/run/systemd/userdb", 0755);
+ (void) mkdir_label("/run/systemd/userdb", 0755);
FOREACH_STRING(address, "/run/systemd/userdb/io.systemd.DynamicUser", VARLINK_ADDR_PATH_MANAGED_OOM_SYSTEM) {
if (!fresh) {
#include "fd-util.h"
#include "fs-util.h"
#include "log.h"
-#include "mkdir-label.h"
#include "process-util.h"
#include "selinux-access.h"
#include "serialize.h"
return log_error_errno(r, "Failed set socket path for private bus: %m");
sa_len = r;
- (void) mkdir_parents_label(sa.un.sun_path, 0755);
(void) sockaddr_un_unlink(&sa.un);
fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (inotify_fd < 0)
return log_error_errno(errno, "Failed to create inotify object: %m");
- (void) mkdir_p_label("/run/systemd/ask-password", 0755);
+ (void) mkdir_label("/run/systemd/ask-password", 0755);
r = inotify_add_watch_and_warn(inotify_fd, "/run/systemd/ask-password", IN_CLOSE_WRITE|IN_DELETE|IN_MOVED_TO|IN_ONLYDIR);
if (r < 0)
return r;
if (r < 0)
return r;
- r = mkdir_p_label(units_path, 0755);
+ r = mkdir_label(units_path, 0755);
}
if (r < 0 && r != -EEXIST)
return r;
m->notify_socket);
sa_len = r;
- (void) mkdir_parents_label(m->notify_socket, 0755);
(void) sockaddr_un_unlink(&sa.un);
r = mac_selinux_bind(fd, &sa.sa, sa_len);
}
}
+static int manager_make_runtime_dir(Manager *m) {
+ int r;
+
+ assert(m);
+
+ _cleanup_free_ char *d = path_join(m->prefix[EXEC_DIRECTORY_RUNTIME], "systemd");
+ if (!d)
+ return log_oom();
+
+ r = mkdir_label(d, 0755);
+ if (r < 0 && r != -EEXIST)
+ return log_error_errno(r, "Failed to create directory '%s/': %m", d);
+
+ return 0;
+}
+
int manager_startup(Manager *m, FILE *serialization, FDSet *fds, const char *root) {
int r;
assert(m);
+ r = manager_make_runtime_dir(m);
+ if (r < 0)
+ return r;
+
/* If we are running in test mode, we still want to run the generators,
* but we should not touch the real generator directories. */
r = lookup_paths_init_or_warn(&m->lookup_paths, m->runtime_scope,