bus-unit-util: add path unit related options
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 15 Dec 2017 00:11:39 +0000 (09:11 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 15 Dec 2017 00:11:39 +0000 (09:11 +0900)
src/shared/bus-unit-util.c

index 20bc4c9..8af738d 100644 (file)
@@ -358,7 +358,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
                               "NoNewPrivileges", "SyslogLevelPrefix", "RemainAfterElapse", "Persistent",
                               "MemoryDenyWriteExecute", "RestrictRealtime", "DynamicUser", "RemoveIPC",
                               "ProtectKernelTunables", "ProtectKernelModules", "ProtectControlGroups", "MountAPIVFS",
-                              "CPUSchedulingResetOnFork", "LockPersonality")) {
+                              "CPUSchedulingResetOnFork", "LockPersonality", "MakeDirectory")) {
 
                 r = parse_boolean(eq);
                 if (r < 0)
@@ -1057,7 +1057,10 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
 
                 r = sd_bus_message_close_container(m);
 
-        } else if (STR_IN_SET(field, "RuntimeDirectoryMode", "StateDirectoryMode", "CacheDirectoryMode", "LogsDirectoryMode", "ConfigurationDirectoryMode", "UMask")) {
+        } else if (STR_IN_SET(field,
+                              "RuntimeDirectoryMode", "StateDirectoryMode", "CacheDirectoryMode",
+                              "LogsDirectoryMode", "ConfigurationDirectoryMode", "UMask",
+                              "DirectoryMode")) {
                 mode_t mode;
 
                 r = parse_mode(eq, &mode);
@@ -1306,6 +1309,17 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
 
                 r = sd_bus_message_append(m, "v", "t", t);
 
+        } else if (STR_IN_SET(field,
+                              "PathExists", "PathExistsGlob", "PathChanged",
+                              "PathModified", "DirectoryNotEmpty")) {
+
+                if (!path_is_absolute(eq)) {
+                        log_error("Path specified by %s= is not absolute: %s", field, eq);
+                        return -EINVAL;
+                }
+
+                r = sd_bus_message_append(m, "v", "s", eq);
+
         } else {
                 log_error("Unknown assignment: %s", assignment);
                 return -EINVAL;