systemd/backport-systemctl-skip-non-existent-units-in-the-cat-verb.patch
2023-12-07 20:19:14 +08:00

59 lines
1.9 KiB
Diff

From a25457f5b7689265bd2235c4da218896e7c5c1d0 Mon Sep 17 00:00:00 2001
From: Frantisek Sumsal <frantisek@sumsal.cz>
Date: Sat, 28 Dec 2019 12:29:19 +0100
Subject: [PATCH 1110/1760] systemctl: skip non-existent units in the 'cat'
verb
When processing list of units (either provided manually or as a
wildcard), let's skip units for which we don't have an on-disk
counterpart, but note the -ENOENT error code and propagate it back to
the user.
Fixes: #14082
Reference: https://github.com/systemd/systemd/commit/a25457f5b7689265bd2235c4da218896e7c5c1d0
Conflict: NA
---
src/systemctl/systemctl.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 20e0d45..3e4fc46 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -5937,7 +5937,7 @@ static int cat(int argc, char *argv[], void *userdata) {
char **name;
sd_bus *bus;
bool first = true;
- int r;
+ int r, rc = 0;
/* Include all units by default — i.e. continue as if the --all
* option was used */
@@ -5982,8 +5982,12 @@ static int cat(int argc, char *argv[], void *userdata) {
}
if (r < 0)
return r;
- if (r == 0)
- return -ENOENT;
+ if (r == 0) {
+ /* Skip units which have no on-disk counterpart, but
+ * propagate the error to the user */
+ rc = -ENOENT;
+ continue;
+ }
if (first)
first = false;
@@ -6009,7 +6013,7 @@ static int cat(int argc, char *argv[], void *userdata) {
return r;
}
- return 0;
+ return rc;
}
static int set_property(int argc, char *argv[], void *userdata) {
--
1.8.3.1