chiark / gitweb /
manager: get rid of destinction between running_as=system and running_as=init, as...
[elogind.git] / src / systemctl.c
index 444ddf370c4ead051985dfab198f7b9ae5675ed9..429d6a7a21440cf5bb13c55f0140428da36ef32c 100644 (file)
@@ -1751,7 +1751,6 @@ static int shutdown_parse_argv(int argc, char *argv[]) {
         optind = argc;
 
         return 1;
-
 }
 
 static int telinit_parse_argv(int argc, char *argv[]) {
@@ -2262,7 +2261,13 @@ int main(int argc, char*argv[]) {
                 goto finish;
         }
 
-        if ((bus = dbus_bus_get(arg_session ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &error)))
+        /* If we are root, then let's not go via the bus */
+        if (geteuid() == 0 && !arg_session)
+                bus = dbus_connection_open("unix:abstract=/org/freedesktop/systemd1/private", &error);
+        else
+                bus = dbus_bus_get(arg_session ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &error);
+
+        if (bus)
                 dbus_connection_set_exit_on_disconnect(bus, FALSE);
 
         switch (arg_action) {