X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fsystemctl%2Fsystemctl.c;h=e3818cd6df9ea809c503b95c7df92c629e5bc69f;hb=94c01aeb1049a87435e046245b8e5d975b778c60;hp=fde3f43a174839c2d3400a544199ae1c8b89739b;hpb=a00963a2e4e98c0e4ef477b63b70c5e71d65fdc1;p=elogind.git diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index fde3f43a1..e3818cd6d 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1454,8 +1454,9 @@ static int cancel_job(DBusConnection *bus, char **args) { 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 @@ -1465,6 +1466,8 @@ static bool need_daemon_reload(DBusConnection *bus, const char *unit) { _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); @@ -1478,7 +1481,7 @@ static bool need_daemon_reload(DBusConnection *bus, const char *unit) { "org.freedesktop.systemd1.Manager", "GetUnit", &reply, - NULL, + &error, DBUS_TYPE_STRING, &n, DBUS_TYPE_INVALID); if (r < 0) @@ -1499,7 +1502,7 @@ static bool need_daemon_reload(DBusConnection *bus, const char *unit) { "org.freedesktop.DBus.Properties", "Get", &reply, - NULL, + &error, DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &property, DBUS_TYPE_INVALID); @@ -1565,7 +1568,7 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me 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, @@ -1919,7 +1922,7 @@ static int start_unit_one( 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 "); @@ -2916,7 +2919,7 @@ static int status_property(const char *name, DBusMessageIter *iter, UnitStatusIn i->fragment_path = s; else if (streq(name, "SourcePath")) i->source_path = s; -#ifndef LEGACY +#ifndef NOLEGACY else if (streq(name, "DefaultControlGroup")) { const char *e; e = startswith(s, SYSTEMD_CGROUP_CONTROLLER ":"); @@ -3444,7 +3447,7 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo r = 1; else r = 3; - } + } while ((p = info.exec)) { LIST_REMOVE(ExecStatusInfo, exec, info.exec, p); @@ -3806,7 +3809,7 @@ static int snapshot(DBusConnection *bus, char **args) { if (!n) return log_oom(); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1",