diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-05-10 03:44:25 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-05-10 03:44:41 +0200 |
commit | 5bb75bc745557d5141066dee796b329507b0c634 (patch) | |
tree | b8aa9958f500fcebd9061de60036d0e5e40984e4 | |
parent | b90b025af151eb4e07121f86495d9362e54b3455 (diff) |
systemctl: return an error code is status fails
This got lost in the refactoring in f74294c1dabb4.
Also make sure that the return code corresponds to the *first* failure,
not the last.
https://lists.fedoraproject.org/pipermail/devel/2014-May/199080.html
-rw-r--r-- | src/systemctl/systemctl.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 7bc8ece042..e1e4640ae8 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4285,7 +4285,7 @@ static int show_all( _cleanup_free_ UnitInfo *unit_infos = NULL; const UnitInfo *u; unsigned c; - int r; + int r, ret = 0; r = get_unit_list(bus, NULL, NULL, &unit_infos, 0, &reply); if (r < 0) @@ -4307,9 +4307,11 @@ static int show_all( r = show_one(verb, bus, p, show_properties, new_line, ellipsized); if (r < 0) return r; + else if (r > 0 && ret == 0) + ret = r; } - return 0; + return ret; } static int show_system_status(sd_bus *bus) { @@ -4431,7 +4433,12 @@ static int show(sd_bus *bus, char **args) { } } - show_one(args[0], bus, unit, show_properties, &new_line, &ellipsized); + r = show_one(args[0], bus, unit, show_properties, + &new_line, &ellipsized); + if (r < 0) + return r; + else if (r > 0 && ret == 0) + ret = r; } if (!strv_isempty(patterns)) { @@ -4448,7 +4455,12 @@ static int show(sd_bus *bus, char **args) { if (!unit) return log_oom(); - show_one(args[0], bus, unit, show_properties, &new_line, &ellipsized); + r = show_one(args[0], bus, unit, show_properties, + &new_line, &ellipsized); + if (r < 0) + return r; + else if (r > 0 && ret == 0) + ret = r; } } } |