X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fmanager.c;h=ad627fc6698c36e46c1c3b60ce7761338997c36b;hp=5cb3588c949443b1706a365fc55a45699246f139;hb=f1d19aa412b34fe025dfd48a5c79d34fdd0f9528;hpb=20c03b7be2c87ef54533db849fd046d7014c36b4 diff --git a/src/manager.c b/src/manager.c index 5cb3588c9..ad627fc66 100644 --- a/src/manager.c +++ b/src/manager.c @@ -2920,13 +2920,22 @@ void manager_run_generators(Manager *m) { } if (!m->generator_unit_path) { - char *p; - char system_path[] = "/run/systemd/generator-XXXXXX", - user_path[] = "/tmp/systemd-generator-XXXXXX"; + const char *p; + char user_path[] = "/tmp/systemd-generator-XXXXXX"; - if (!(p = mkdtemp(m->running_as == MANAGER_SYSTEM ? system_path : user_path))) { - log_error("Failed to generate generator directory: %m"); - goto finish; + if (m->running_as == MANAGER_SYSTEM) { + p = "/run/systemd/generator"; + + if (mkdir_p(p, 0755) < 0) { + log_error("Failed to create generator directory: %m"); + goto finish; + } + + } else { + if (!(p = mkdtemp(user_path))) { + log_error("Failed to create generator directory: %m"); + goto finish; + } } if (!(m->generator_unit_path = strdup(p))) {