59 lines
1.9 KiB
Diff
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
|
|
|