Michal Schmidt e43452
From 7c3d4fb80496c466d6523b88d5720a7f4ff7939d Mon Sep 17 00:00:00 2001
Michal Schmidt e43452
From: Bill Nottingham <notting@redhat.com>
Michal Schmidt e43452
Date: Tue, 22 Nov 2011 15:45:34 -0500
Michal Schmidt f1996e
Subject: [PATCH] Allow 'list-unit-files' to run with --root.
Michal Schmidt e43452
Michal Schmidt e43452
To do so, move the check for the bus to the bus-using portion of
Michal Schmidt e43452
list_unit_files(), and ensure that get_config_path doesn't abort when
Michal Schmidt e43452
checking the runtime path with --root.
Michal Schmidt e43452
(cherry picked from commit d380a3bcd14376ed72286e78dbcc871b7d6d2151)
Michal Schmidt e43452
---
Michal Schmidt e43452
 src/install.c   |    5 ++---
Michal Schmidt e43452
 src/systemctl.c |    5 +++--
Michal Schmidt e43452
 2 files changed, 5 insertions(+), 5 deletions(-)
Michal Schmidt e43452
Michal Schmidt e43452
diff --git a/src/install.c b/src/install.c
Michal Schmidt e43452
index cfbd50e..1fb1f9d 100644
Michal Schmidt e43452
--- a/src/install.c
Michal Schmidt e43452
+++ b/src/install.c
Michal Schmidt e43452
@@ -72,9 +72,8 @@ static int get_config_path(UnitFileScope scope, bool runtime, const char *root_d
Michal Schmidt e43452
         case UNIT_FILE_SYSTEM:
Michal Schmidt e43452
 
Michal Schmidt e43452
                 if (root_dir && runtime)
Michal Schmidt e43452
-                        return -EINVAL;
Michal Schmidt e43452
-
Michal Schmidt e43452
-                if (runtime)
Michal Schmidt e43452
+                        asprintf(&p, "%s/run/systemd/system", root_dir);
Michal Schmidt e43452
+                else if (runtime)
Michal Schmidt e43452
                         p = strdup("/run/systemd/system");
Michal Schmidt e43452
                 else if (root_dir)
Michal Schmidt e43452
                         asprintf(&p, "%s/%s", root_dir, SYSTEM_CONFIG_UNIT_PATH);
Michal Schmidt e43452
diff --git a/src/systemctl.c b/src/systemctl.c
Michal Schmidt e43452
index 4426f70..668641d 100644
Michal Schmidt e43452
--- a/src/systemctl.c
Michal Schmidt e43452
+++ b/src/systemctl.c
Michal Schmidt e43452
@@ -622,8 +622,6 @@ static int list_unit_files(DBusConnection *bus, char **args) {
Michal Schmidt e43452
 
Michal Schmidt e43452
         dbus_error_init(&error);
Michal Schmidt e43452
 
Michal Schmidt e43452
-        assert(bus);
Michal Schmidt e43452
-
Michal Schmidt e43452
         pager_open_if_enabled();
Michal Schmidt e43452
 
Michal Schmidt e43452
         if (avoid_bus()) {
Michal Schmidt e43452
@@ -659,6 +657,8 @@ static int list_unit_files(DBusConnection *bus, char **args) {
Michal Schmidt e43452
 
Michal Schmidt e43452
                 hashmap_free(h);
Michal Schmidt e43452
         } else {
Michal Schmidt e43452
+                assert(bus);
Michal Schmidt e43452
+
Michal Schmidt e43452
                 m = dbus_message_new_method_call(
Michal Schmidt e43452
                                 "org.freedesktop.systemd1",
Michal Schmidt e43452
                                 "/org/freedesktop/systemd1",
Michal Schmidt e43452
@@ -5001,6 +5001,7 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError
Michal Schmidt e43452
         if (!streq(verbs[i].verb, "enable") &&
Michal Schmidt e43452
             !streq(verbs[i].verb, "disable") &&
Michal Schmidt e43452
             !streq(verbs[i].verb, "is-enable") &&
Michal Schmidt e43452
+            !streq(verbs[i].verb, "list-unit-files") &&
Michal Schmidt e43452
             !streq(verbs[i].verb, "reenable") &&
Michal Schmidt e43452
             !streq(verbs[i].verb, "preset") &&
Michal Schmidt e43452
             !streq(verbs[i].verb, "mask") &&