summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorNicolas Cornu <ncornu@aldebaran.com>2015-09-23 09:45:50 +0200
committerNicolas Cornu <ncornu@aldebaran.com>2015-09-23 09:45:50 +0200
commit602b83559a7cfcd3eee05bbdb5518830752a2667 (patch)
tree78786e0b36dd06263329bd96c3f9ead454d51ef2 /src/core
parentf98f4ace4df1b67572a5fbb3b1924b303d77d773 (diff)
Hook more properties for transient units
systemd-run can now launch units with WorkingDirectory, RootDirectory set.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/dbus-execute.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
index fd13c6d019..868c8cc05a 100644
--- a/src/core/dbus-execute.c
+++ b/src/core/dbus-execute.c
@@ -847,27 +847,36 @@ int bus_exec_context_set_transient_property(
return 1;
- } else if (streq(name, "TTYPath")) {
- const char *tty;
+ } else if (STR_IN_SET(name,
+ "TTYPath", "WorkingDirectory", "RootDirectory")) {
+ const char *s;
- r = sd_bus_message_read(message, "s", &tty);
+ r = sd_bus_message_read(message, "s", &s);
if (r < 0)
return r;
- if (!path_is_absolute(tty))
- return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "TTY device not absolute path");
+ if (!path_is_absolute(s))
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "%s takes an absolute path", name);
if (mode != UNIT_CHECK) {
char *t;
- t = strdup(tty);
+ t = strdup(s);
if (!t)
return -ENOMEM;
- free(c->tty_path);
- c->tty_path = t;
+ if (streq(name, "TTYPath")) {
+ free(c->tty_path);
+ c->tty_path = t;
+ } else if (streq(name, "WorkingDirectory")) {
+ free(c->working_directory);
+ c->working_directory = t;
+ } else if (streq(name, "RootDirectory")) {
+ free(c->root_directory);
+ c->root_directory = t;
+ }
- unit_write_drop_in_private_format(u, mode, name, "TTYPath=%s\n", tty);
+ unit_write_drop_in_private_format(u, mode, name, "%s=%s\n", name, s);
}
return 1;