summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-05-10 03:44:25 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-05-10 03:44:41 +0200
commit5bb75bc745557d5141066dee796b329507b0c634 (patch)
treeb8aa9958f500fcebd9061de60036d0e5e40984e4
parentb90b025af151eb4e07121f86495d9362e54b3455 (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.c20
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;
}
}
}