chiark / gitweb /
systemctl: show sub state along active state
[elogind.git] / dbus-unit.c
index f48433b60bc16cabe3de97f5b624dd758128c556..7897b857b67585b8e01b595be590ddafe3d90cd3 100644 (file)
@@ -49,7 +49,8 @@ static const char introspection[] =
         "  <property name=\"Description\" type=\"s\" access=\"read\"/>"
         "  <property name=\"LoadState\" type=\"s\" access=\"read\"/>"
         "  <property name=\"ActiveState\" type=\"s\" access=\"read\"/>"
-        "  <property name=\"LoadPath\" type=\"s\" access=\"read\"/>"
+        "  <property name=\"SubState\" type=\"s\" access=\"read\"/>"
+        "  <property name=\"FragmentPath\" type=\"s\" access=\"read\"/>"
         "  <property name=\"ActiveEnterTimestamp\" type=\"t\" access=\"read\"/>"
         "  <property name=\"ActiveExitTimestamp\" type=\"t\" access=\"read\"/>"
         "  <property name=\"CanReload\" type=\"b\" access=\"read\"/>"
@@ -94,7 +95,9 @@ static int bus_unit_append_description(Manager *m, DBusMessageIter *i, const cha
         return 0;
 }
 
-static int bus_unit_append_load_state(Manager *m, DBusMessageIter *i, const char *property, void *data) {
+DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_unit_append_load_state, unit_load_state, UnitLoadState);
+
+static int bus_unit_append_active_state(Manager *m, DBusMessageIter *i, const char *property, void *data) {
         Unit *u = data;
         const char *state;
 
@@ -103,7 +106,7 @@ static int bus_unit_append_load_state(Manager *m, DBusMessageIter *i, const char
         assert(property);
         assert(u);
 
-        state = unit_load_state_to_string(u->meta.load_state);
+        state = unit_active_state_to_string(unit_active_state(u));
 
         if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &state))
                 return -ENOMEM;
@@ -111,7 +114,7 @@ static int bus_unit_append_load_state(Manager *m, DBusMessageIter *i, const char
         return 0;
 }
 
-static int bus_unit_append_active_state(Manager *m, DBusMessageIter *i, const char *property, void *data) {
+static int bus_unit_append_sub_state(Manager *m, DBusMessageIter *i, const char *property, void *data) {
         Unit *u = data;
         const char *state;
 
@@ -120,7 +123,7 @@ static int bus_unit_append_active_state(Manager *m, DBusMessageIter *i, const ch
         assert(property);
         assert(u);
 
-        state = unit_active_state_to_string(unit_active_state(u));
+        state = unit_sub_state_to_string(u);
 
         if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &state))
                 return -ENOMEM;
@@ -215,9 +218,10 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusMessage *message
         const BusProperty properties[] = {
                 { "org.freedesktop.systemd1.Unit", "Id",                   bus_unit_append_id,           "s",    u                               },
                 { "org.freedesktop.systemd1.Unit", "Description",          bus_unit_append_description,  "s",    u                               },
-                { "org.freedesktop.systemd1.Unit", "LoadState",            bus_unit_append_load_state,   "s",    u                               },
+                { "org.freedesktop.systemd1.Unit", "LoadState",            bus_unit_append_load_state,   "s",    &u->meta.load_state             },
                 { "org.freedesktop.systemd1.Unit", "ActiveState",          bus_unit_append_active_state, "s",    u                               },
-                { "org.freedesktop.systemd1.Unit", "LoadPath",             bus_property_append_string,   "s",    u->meta.load_path               },
+                { "org.freedesktop.systemd1.Unit", "SubState",             bus_unit_append_sub_state,    "s",    u                               },
+                { "org.freedesktop.systemd1.Unit", "FragmentPath",         bus_property_append_string,   "s",    u->meta.fragment_path           },
                 { "org.freedesktop.systemd1.Unit", "ActiveEnterTimestamp", bus_property_append_uint64,   "t",    &u->meta.active_enter_timestamp },
                 { "org.freedesktop.systemd1.Unit", "ActiveExitTimestamp",  bus_property_append_uint64,   "t",    &u->meta.active_exit_timestamp  },
                 { "org.freedesktop.systemd1.Unit", "CanReload",            bus_unit_append_can_reload,   "b",    u                               },
@@ -278,7 +282,7 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusMessage *message
         }
 
         if (reply) {
-                if (!dbus_connection_send(m->bus, reply, NULL))
+                if (!dbus_connection_send(m->api_bus, reply, NULL))
                         goto oom;
 
                 dbus_message_unref(reply);
@@ -363,7 +367,7 @@ void bus_unit_send_change_signal(Unit *u) {
                         goto oom;
         }
 
-        if (!dbus_connection_send(u->meta.manager->bus, m, NULL))
+        if (!dbus_connection_send(u->meta.manager->api_bus, m, NULL))
                 goto oom;
 
         free(p);
@@ -405,7 +409,7 @@ void bus_unit_send_removed_signal(Unit *u) {
                                       DBUS_TYPE_INVALID))
                 goto oom;
 
-        if (!dbus_connection_send(u->meta.manager->bus, m, NULL))
+        if (!dbus_connection_send(u->meta.manager->api_bus, m, NULL))
                 goto oom;
 
         free(p);