X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fmanager.c;h=0e35ba5cab9134d3364bbdf30e00a2bff88a3b21;hb=fcc81ea3616b1108a23c0997331923d052539124;hp=bbe5efa560a4500a604f9aa37b6b44f5430d8b1e;hpb=734624951b36a08bd275dc06c0e5f17b7c2792d9;p=elogind.git diff --git a/src/core/manager.c b/src/core/manager.c index bbe5efa56..0e35ba5ca 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -2507,11 +2507,29 @@ static int create_generator_dir(Manager *m, char **generator, const char *name) return 0; if (m->running_as == SYSTEMD_SYSTEM && getpid() == 1) { + /* systemd --system, not running --test */ p = strappend("/run/systemd/", name); if (!p) return log_oom(); + r = mkdir_p_label(p, 0755); + if (r < 0) { + log_error("Failed to create generator directory %s: %s", + p, strerror(-r)); + free(p); + return r; + } + } else if (m->running_as == SYSTEMD_USER) { + const char *s = NULL; + + s = getenv("XDG_RUNTIME_DIR"); + if (!s) + return -EINVAL; + p = strjoin(s, "/systemd/", name, NULL); + if (!p) + return log_oom(); + r = mkdir_p_label(p, 0755); if (r < 0) { log_error("Failed to create generator directory %s: %s", @@ -2520,6 +2538,8 @@ static int create_generator_dir(Manager *m, char **generator, const char *name) return r; } } else { + /* systemd --system --test */ + p = strjoin("/tmp/systemd-", name, ".XXXXXX", NULL); if (!p) return log_oom();