File 0001-systemctl-return-an-error-code-is-status-fails.patch of Package systemd.1059
Based on 5bb75bc745557d5141066dee796b329507b0c634 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Sat, 10 May 2014 03:44:25 +0200
Subject: [PATCH] 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
---
src/systemctl/systemctl.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
--- src/systemctl/systemctl.c
+++ src/systemctl/systemctl.c 2015-05-20 09:52:20.819887686 +0000
@@ -3878,7 +3878,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, &reply, &unit_infos, NULL);
if (r < 0)
@@ -3900,9 +3900,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 cat(sd_bus *bus, char **args) {
@@ -4048,7 +4050,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)) {
@@ -4065,7 +4072,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;
}
}
}