systemd/0076-run-support-system-to-...

113 lines
3.9 KiB
Diff

From 9888a5919971d6eacd1ca025c1d4197248022319 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 6 Nov 2013 17:31:20 +0100
Subject: [PATCH] run: support --system to match other commands, even if
redundant
Conflicts:
man/systemd-run.xml
src/run/run.c
---
man/systemd-run.xml | 9 +++++++++
src/run/run.c | 20 +++++++++++++-------
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/man/systemd-run.xml b/man/systemd-run.xml
index 252335b..48a0715 100644
--- a/man/systemd-run.xml
+++ b/man/systemd-run.xml
@@ -113,6 +113,15 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
</varlistentry>
<varlistentry>
+ <term><option>--system</option></term>
+
+ <listitem>
+ <para>Talk to the service manager of the system. This is the
+ implied default.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>--scope</option></term>
<listitem>
diff --git a/src/run/run.c b/src/run/run.c
index 18a4920..a6abead 100644
--- a/src/run/run.c
+++ b/src/run/run.c
@@ -61,6 +61,7 @@ static int parse_argv(int argc, char *argv[]) {
enum {
ARG_VERSION = 0x100,
ARG_USER,
+ ARG_SYSTEM,
ARG_SCOPE,
ARG_UNIT,
ARG_DESCRIPTION,
@@ -72,6 +73,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, ARG_VERSION },
{ "user", no_argument, NULL, ARG_USER },
+ { "system", no_argument, NULL, ARG_SYSTEM },
{ "scope", no_argument, NULL, ARG_SCOPE },
{ "unit", required_argument, NULL, ARG_UNIT },
{ "description", required_argument, NULL, ARG_DESCRIPTION },
@@ -103,6 +105,10 @@ static int parse_argv(int argc, char *argv[]) {
arg_user = true;
break;
+ case ARG_SYSTEM:
+ arg_user = false;
+ break;
+
case ARG_SCOPE:
arg_scope = true;
break;
@@ -333,12 +339,12 @@ int main(int argc, char* argv[]) {
r = parse_argv(argc, argv);
if (r <= 0)
- goto fail;
+ goto finish;
r = find_binary(argv[optind], &command);
if (r < 0) {
log_error("Failed to find executable %s: %s", argv[optind], strerror(-r));
- goto fail;
+ goto finish;
}
argv[optind] = command;
@@ -346,7 +352,7 @@ int main(int argc, char* argv[]) {
description = strv_join(argv + optind, " ");
if (!description) {
r = log_oom();
- goto fail;
+ goto finish;
}
arg_description = description;
@@ -357,8 +363,8 @@ int main(int argc, char* argv[]) {
else
r = sd_bus_open_system(&bus);
if (r < 0) {
- log_error("Failed to create new bus connection: %s", strerror(-r));
- goto fail;
+ log_error("Failed to create bus connection: %s", strerror(-r));
+ goto finish;
}
if (arg_scope)
@@ -368,9 +374,9 @@ int main(int argc, char* argv[]) {
if (r < 0) {
log_error("Failed start transient unit: %s", error.message ? error.message : strerror(-r));
sd_bus_error_free(&error);
- goto fail;
+ goto finish;
}
-fail:
+finish:
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
}