chiark / gitweb /
manager: print ephemeral information about running jobs' timeouts (v2)
[elogind.git] / src / core / unit.c
index e3b620603cf2c489ba10e5063a7e923a8bd5d2ee..e5ea994e5473a20cf47c355cad13649ad1d77e85 100644 (file)
@@ -671,6 +671,18 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) {
         assert(u);
         assert(c);
 
+        if (c->working_directory) {
+                r = unit_require_mounts_for(u, c->working_directory);
+                if (r < 0)
+                        return r;
+        }
+
+        if (c->root_directory) {
+                r = unit_require_mounts_for(u, c->root_directory);
+                if (r < 0)
+                        return r;
+        }
+
         if (c->std_output != EXEC_OUTPUT_KMSG &&
             c->std_output != EXEC_OUTPUT_SYSLOG &&
             c->std_output != EXEC_OUTPUT_JOURNAL &&
@@ -2997,17 +3009,15 @@ int unit_require_mounts_for(Unit *u, const char *path) {
          * units can easily determine which units to make themselves a
          * dependency of. */
 
+        if (!path_is_absolute(path))
+                return -EINVAL;
+
         p = strdup(path);
         if (!p)
                 return -ENOMEM;
 
         path_kill_slashes(p);
 
-        if (!path_is_absolute(p)) {
-                free(p);
-                return -EINVAL;
-        }
-
         if (!path_is_safe(p)) {
                 free(p);
                 return -EPERM;