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