chiark / gitweb /
dbus: complete coverage of timer units
[elogind.git] / src / dbus.c
index a34c7dc17bdabecc45c8195cfb199991026bb7be..3a6d79f3d9368f8cf15739f5e50eb31a90afaefd 100644 (file)
@@ -761,7 +761,7 @@ static int bus_init_system(Manager *m) {
         if (m->system_bus)
                 return 0;
 
-        if (m->running_as != MANAGER_SESSION && m->api_bus)
+        if (m->running_as == MANAGER_SYSTEM && m->api_bus)
                 m->system_bus = m->api_bus;
         else {
                 if (!(m->system_bus = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error))) {
@@ -819,7 +819,7 @@ static int bus_init_api(Manager *m) {
         if (m->api_bus)
                 return 0;
 
-        if (m->running_as != MANAGER_SESSION && m->system_bus)
+        if (m->running_as == MANAGER_SYSTEM && m->system_bus)
                 m->api_bus = m->system_bus;
         else {
                 if (!(m->api_bus = dbus_bus_get_private(m->running_as == MANAGER_SESSION ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &error))) {
@@ -914,7 +914,7 @@ static int bus_init_private(Manager *m) {
                 return 0;
 
         /* We want the private bus only when running as init */
-        if (m->running_as != MANAGER_INIT)
+        if (m->running_as != MANAGER_SYSTEM)
                 return 0;
 
         if (!(m->private_bus = dbus_server_listen("unix:abstract=/org/freedesktop/systemd1/private", &error))) {
@@ -1201,7 +1201,6 @@ DBusHandlerResult bus_default_message_handler(Manager *m, DBusConnection *c, DBu
                 const char *interface;
                 const BusProperty *p;
                 DBusMessageIter iter, sub, sub2, sub3;
-                bool any = false;
 
                 if (!dbus_message_get_args(
                             message,
@@ -1219,7 +1218,7 @@ DBusHandlerResult bus_default_message_handler(Manager *m, DBusConnection *c, DBu
                         goto oom;
 
                 for (p = properties; p->property; p++) {
-                        if (!streq(p->interface, interface))
+                        if (interface[0] && !streq(p->interface, interface))
                                 continue;
 
                         if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY, NULL, &sub2) ||
@@ -1239,8 +1238,6 @@ DBusHandlerResult bus_default_message_handler(Manager *m, DBusConnection *c, DBu
                         if (!dbus_message_iter_close_container(&sub2, &sub3) ||
                             !dbus_message_iter_close_container(&sub, &sub2))
                                 goto oom;
-
-                        any = true;
                 }
 
                 if (!dbus_message_iter_close_container(&iter, &sub))
@@ -1348,11 +1345,11 @@ int bus_broadcast(Manager *m, DBusMessage *message) {
         assert(message);
 
         SET_FOREACH(c, m->bus_connections_for_dispatch, i)
-                if (c != m->system_bus || m->running_as != MANAGER_SESSION)
+                if (c != m->system_bus || m->running_as == MANAGER_SYSTEM)
                         oom = !dbus_connection_send(c, message, NULL);
 
         SET_FOREACH(c, m->bus_connections, i)
-                if (c != m->system_bus || m->running_as != MANAGER_SESSION)
+                if (c != m->system_bus || m->running_as == MANAGER_SYSTEM)
                         oom = !dbus_connection_send(c, message, NULL);
 
         return oom ? -ENOMEM : 0;
@@ -1460,6 +1457,22 @@ int bus_property_append_int32(Manager *m, DBusMessageIter *i, const char *proper
         return 0;
 }
 
+int bus_property_append_size(Manager *m, DBusMessageIter *i, const char *property, void *data) {
+        uint64_t u;
+
+        assert(m);
+        assert(i);
+        assert(property);
+        assert(data);
+
+        u = (uint64_t) *(size_t*) data;
+
+        if (!dbus_message_iter_append_basic(i, DBUS_TYPE_UINT64, &u))
+                return -ENOMEM;
+
+        return 0;
+}
+
 int bus_parse_strv(DBusMessage *m, char ***_l) {
         DBusMessageIter iter, sub;
         unsigned n = 0, i = 0;