diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-11-27 12:05:57 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2019-11-27 12:32:14 +0100 |
commit | 540ac9338ea6c8fc57f99384d19bf8da4f615cd4 (patch) | |
tree | c8766c4986f8136365f2e32d7f942e537afe5be6 | |
parent | core: write out correct field name when creating transient service units (diff) | |
download | systemd-540ac9338ea6c8fc57f99384d19bf8da4f615cd4.tar.xz systemd-540ac9338ea6c8fc57f99384d19bf8da4f615cd4.zip |
core: prefer non-@ syntax for ExecStart=
If the zeroth and first argv[] element on the same we don't need to
generate the "@" syntax for ExecStart= and friends.
-rw-r--r-- | src/core/dbus-execute.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index c35b486408..1d0bc1ede3 100644 --- a/src/core/dbus-execute.c +++ b/src/core/dbus-execute.c @@ -1098,22 +1098,28 @@ int bus_set_transient_exec_command( fprintf(f, "%s=\n", name); LIST_FOREACH(command, c, *exec_command) { - _cleanup_free_ char *a = NULL, *t = NULL, *exec_chars = NULL; - const char *p; + _cleanup_free_ char *a = NULL, *exec_chars = NULL; - p = unit_escape_setting(c->path, UNIT_ESCAPE_C|UNIT_ESCAPE_SPECIFIERS, &t); - if (!p) + exec_chars = exec_command_flags_to_exec_chars(c->flags); + if (!exec_chars) return -ENOMEM; a = unit_concat_strv(c->argv, UNIT_ESCAPE_C|UNIT_ESCAPE_SPECIFIERS); if (!a) return -ENOMEM; - exec_chars = exec_command_flags_to_exec_chars(c->flags); - if (!exec_chars) - return -ENOMEM; + if (streq_ptr(c->path, c->argv ? c->argv[0] : NULL)) + fprintf(f, "%s=%s%s\n", name, exec_chars, a); + else { + _cleanup_free_ char *t = NULL; + const char *p; + + p = unit_escape_setting(c->path, UNIT_ESCAPE_C|UNIT_ESCAPE_SPECIFIERS, &t); + if (!p) + return -ENOMEM; - fprintf(f, "%s=%s@%s %s\n", name, exec_chars, p, a); + fprintf(f, "%s=%s@%s %s\n", name, exec_chars, p, a); + } } r = fflush_and_check(f); |