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