chiark / gitweb /
hostname: properly deal with unset hostname in fedora configuration
[elogind.git] / src / dbus-common.c
index 504eefbbb0b3e00fc6a917dd4de75fd413268839..127da23bab358664f6cda97bb6e05d8e0ee1ac51 100644 (file)
@@ -54,7 +54,7 @@ int bus_check_peercred(DBusConnection *c) {
         return 1;
 }
 
-int bus_connect(DBusBusType t, DBusConnection **_bus, DBusError *error) {
+int bus_connect(DBusBusType t, DBusConnection **_bus, bool *private, DBusError *error) {
         DBusConnection *bus;
 
         assert(_bus);
@@ -62,7 +62,7 @@ int bus_connect(DBusBusType t, DBusConnection **_bus, DBusError *error) {
         /* If we are root, then let's not go via the bus */
         if (geteuid() == 0 && t == DBUS_BUS_SYSTEM) {
 
-                if (!(bus = dbus_connection_open("unix:abstract=/org/freedesktop/systemd1/private", error)))
+                if (!(bus = dbus_connection_open_private("unix:abstract=/org/freedesktop/systemd1/private", error)))
                         return -EIO;
 
                 if (bus_check_peercred(bus) < 0) {
@@ -71,9 +71,16 @@ int bus_connect(DBusBusType t, DBusConnection **_bus, DBusError *error) {
                         dbus_set_error_const(error, DBUS_ERROR_ACCESS_DENIED, "Failed to verify owner of bus.");
                         return -EACCES;
                 }
+
+                if (private)
+                        *private = true;
+
         } else {
-                if (!(bus = dbus_bus_get(t, error)))
+                if (!(bus = dbus_bus_get_private(t, error)))
                         return -EIO;
+
+                if (private)
+                        *private = false;
         }
 
         dbus_connection_set_exit_on_disconnect(bus, FALSE);