#define BUS_TARGET_INTERFACE \
" <interface name=\"org.freedesktop.systemd1.Target\">\n" \
- " <property name=\"SysVRunLevel\" type=\"s\" access=\"read\"/>\n" \
" </interface>\n"
#define INTROSPECTION \
const char bus_target_interface[] = BUS_TARGET_INTERFACE;
-static int bus_target_append_runlevel(Manager *n, DBusMessageIter *i, const char *property, void *data) {
- Target *t = data;
- const char *d;
- char buf[2];
-
- assert(n);
- assert(i);
- assert(property);
- assert(t);
-
- buf[0] = (char) target_get_runlevel(t);
- buf[1] = 0;
-
- d = buf;
-
- if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &d))
- return -ENOMEM;
-
- return 0;
-}
-
DBusHandlerResult bus_target_message_handler(Unit *u, DBusConnection *c, DBusMessage *message) {
const BusProperty properties[] = {
BUS_UNIT_PROPERTIES,
- { "org.freedesktop.systemd1.Target", "SysVRunLevel", bus_target_append_runlevel, "s", u },
{ NULL, NULL, NULL, NULL, NULL }
};
return target_state_to_string(TARGET(u)->state);
}
-int target_get_runlevel(Target *t) {
-
- static const struct {
- const char *special;
- const int runlevel;
- } table[] = {
- { SPECIAL_RUNLEVEL5_TARGET, '5' },
- { SPECIAL_RUNLEVEL4_TARGET, '4' },
- { SPECIAL_RUNLEVEL3_TARGET, '3' },
- { SPECIAL_RUNLEVEL2_TARGET, '2' },
- { SPECIAL_RESCUE_TARGET, '1' },
- { SPECIAL_POWEROFF_TARGET, '0' },
- { SPECIAL_REBOOT_TARGET, '6' },
- };
-
- unsigned i;
-
- assert(t);
-
- /* Tries to determine if this is a SysV runlevel and returns
- * it if that is so. */
-
- for (i = 0; i < ELEMENTSOF(table); i++)
- if (unit_has_name(UNIT(t), table[i].special))
- return table[i].runlevel;
-
- return 0;
-}
-
static const char* const target_state_table[_TARGET_STATE_MAX] = {
[TARGET_DEAD] = "dead",
[TARGET_ACTIVE] = "active"
extern const UnitVTable target_vtable;
-int target_get_runlevel(Target *t);
-
const char* target_state_to_string(TargetState i);
TargetState target_state_from_string(const char *s);