systemctl: 'show' don't exit with a failure status if the requested property does not exist (#5201)

"systemctl show -pUnknown <service>" used to exit with '0' even if the property
passed by '-p' doesn't exist. But since commit 3dced37b7c (v231+),
it exits with a failure status.

"systemctl show" is supposed to be scriptable and therefore its behavior is
supposed to be stable.

This patch restores the old behavior on which a couple of scripts already rely
now.

Also when the requested property doesn't exist, it always logs it at the debug
level since this part of the code is only used by the show command.

Fixes: #5118
This commit is contained in:
Franck Bui 2017-02-02 19:29:44 +01:00 committed by Zbigniew Jędrzejewski-Szmek
parent 486b3d08db
commit f1669917f5

View file

@ -5029,13 +5029,10 @@ static int show_one(
r = 0;
if (show_properties) {
char **pp;
int not_found_level = streq(verb, "show") ? LOG_DEBUG : LOG_WARNING;
STRV_FOREACH(pp, arg_properties)
if (!set_contains(found_properties, *pp)) {
log_full(not_found_level, "Property %s does not exist.", *pp);
r = -ENXIO;
}
if (!set_contains(found_properties, *pp))
log_debug("Property %s does not exist.", *pp);
} else if (streq(verb, "help"))
show_unit_help(&info);