From: Zbigniew Jędrzejewski-Szmek Date: Tue, 18 Sep 2012 20:03:34 +0000 (+0200) Subject: systemctl: warn about triggering units only at the end X-Git-Tag: v190~23 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=49111a708eb3bc8488c56c4695fa36c826bf3657;hp=d39b034af6f9795c4f17a8ddd186f026bb74193c systemctl: warn about triggering units only at the end Instead of checking each unit separately, check once at the end. This should avoid spurious warnings about a service being triggerable by other stuff. --- diff --git a/TODO b/TODO index c941cb070..ec961eaaf 100644 --- a/TODO +++ b/TODO @@ -1,10 +1,4 @@ Bugfixes: -* there is nothing to warn about here :) - $ systemctl stop systemd-udevd.service systemd-udevd-kernel.socket systemd-udevd-control.socket - Warning: Stopping systemd-udevd.service, but it can still be activated by: - systemd-udevd-control.socket - systemd-udevd-kernel.socket - * check systemd-tmpfiles for selinux context hookup for mknod(), symlink() and similar * swap units that are activated by one name but shown in the kernel under another are semi-broken diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 729d4dd32..cc9c77525 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1584,11 +1584,6 @@ static int start_unit_one( p = NULL; } - /* When stopping a unit warn if it can still be triggered by - * another active unit (socket, path, timer) */ - if (!arg_quiet && streq(method, "StopUnit")) - check_triggering_units(bus, name); - return 0; } @@ -1723,6 +1718,16 @@ static int start_unit(DBusConnection *bus, char **args) { ret = r; goto finish; } + + /* When stopping units, warn if they can still be triggered by + * another active unit (socket, path, timer) */ + if (!arg_quiet && streq(method, "StopUnit")) { + if (one_name) + check_triggering_units(bus, one_name); + else + STRV_FOREACH(name, args+1) + check_triggering_units(bus, *name); + } } finish: