From: Lennart Poettering Date: Wed, 27 Nov 2019 11:05:57 +0000 (+0100) Subject: core: prefer non-@ syntax for ExecStart= X-Git-Tag: v244~23^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=540ac9338ea6c8fc57f99384d19bf8da4f615cd4;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index c35b4864081..1d0bc1ede3c 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);