}
}
-static int get_unit_list(DBusConnection *bus, DBusMessage **reply,
- struct unit_info **unit_infos, unsigned *c) {
+static int get_unit_list(
+ DBusConnection *bus,
+ DBusMessage **reply,
+ struct unit_info **unit_infos,
+ unsigned *c) {
+
DBusMessageIter iter, sub;
size_t size = 0;
int r;
return 0;
}
-static int get_triggered_units(DBusConnection *bus, const char* unit_path,
- char*** triggered)
-{
+static int get_triggered_units(
+ DBusConnection *bus,
+ const char* unit_path,
+ char*** triggered) {
+
const char *interface = "org.freedesktop.systemd1.Unit",
*triggers_property = "Triggers";
_cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
return 0;
}
-static bool need_daemon_reload(DBusConnection *bus, const char *unit) {
+static int need_daemon_reload(DBusConnection *bus, const char *unit) {
_cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
+ _cleanup_dbus_error_free_ DBusError error;
dbus_bool_t b = FALSE;
DBusMessageIter iter, sub;
const char
_cleanup_free_ char *n = NULL;
int r;
+ dbus_error_init(&error);
+
/* We ignore all errors here, since this is used to show a warning only */
n = unit_name_mangle(unit);
"org.freedesktop.systemd1.Manager",
"GetUnit",
&reply,
- NULL,
+ &error,
DBUS_TYPE_STRING, &n,
DBUS_TYPE_INVALID);
if (r < 0)
"org.freedesktop.DBus.Properties",
"Get",
&reply,
- NULL,
+ &error,
DBUS_TYPE_STRING, &interface,
DBUS_TYPE_STRING, &property,
DBUS_TYPE_INVALID);
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
-#ifndef LEGACY
+#ifndef NOLEGACY
dbus_error_free(&error);
if (dbus_message_get_args(message, &error,
DBUS_TYPE_UINT32, &id,
return -EIO;
}
- if (need_daemon_reload(bus, n))
+ if (need_daemon_reload(bus, n) > 0)
log_warning("Warning: Unit file of %s changed on disk, 'systemctl %sdaemon-reload' recommended.",
n, arg_scope == UNIT_FILE_SYSTEM ? "" : "--user ");
printf(" Status: \"%s\"\n", i->status_text);
if (i->control_group &&
- (i->main_pid > 0 || i->control_pid > 0 || cg_is_empty_by_spec(i->control_group, false) == 0)) {
+ (i->main_pid > 0 || i->control_pid > 0 || cg_is_empty(SYSTEMD_CGROUP_CONTROLLER, i->control_group, false) == 0)) {
unsigned c;
printf(" CGroup: %s\n", i->control_group);
if (i->control_pid > 0)
extra[k++] = i->control_pid;
- show_cgroup_and_extra_by_spec(i->control_group, prefix,
+ show_cgroup_and_extra(SYSTEMD_CGROUP_CONTROLLER, i->control_group, prefix,
c, false, extra, k, flags);
}
}
i->fragment_path = s;
else if (streq(name, "SourcePath"))
i->source_path = s;
-#ifndef LEGACY
- else if (streq(name, "DefaultControlGroup"))
- i->control_group = s;
+#ifndef NOLEGACY
+ else if (streq(name, "DefaultControlGroup")) {
+ const char *e;
+ e = startswith(s, SYSTEMD_CGROUP_CONTROLLER ":");
+ if (e)
+ i->control_group = e;
+ }
#endif
else if (streq(name, "ControlGroup"))
i->control_group = s;
return 0;
- } else if (dbus_message_iter_get_element_type(iter) == DBUS_TYPE_STRUCT && streq(name, "ControlGroupAttributes")) {
- DBusMessageIter sub, sub2;
-
- dbus_message_iter_recurse(iter, &sub);
- while (dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRUCT) {
- const char *controller, *attr, *value;
-
- dbus_message_iter_recurse(&sub, &sub2);
-
- if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &controller, true) >= 0 &&
- bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &attr, true) >= 0 &&
- bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &value, false) >= 0) {
-
- printf("ControlGroupAttributes={ controller=%s ; attribute=%s ; value=\"%s\" }\n",
- controller,
- attr,
- value);
- }
-
- dbus_message_iter_next(&sub);
- }
-
- return 0;
-
} else if (dbus_message_iter_get_element_type(iter) == DBUS_TYPE_STRUCT && startswith(name, "Exec")) {
DBusMessageIter sub;
r = 1;
else
r = 3;
- }
+ }
while ((p = info.exec)) {
LIST_REMOVE(ExecStatusInfo, exec, info.exec, p);
if (!n)
return log_oom();
- r = bus_method_call_with_reply (
+ r = bus_method_call_with_reply(
bus,
"org.freedesktop.systemd1",
"/org/freedesktop/systemd1",