summaryrefslogtreecommitdiff
path: root/backport-systemctl-fix-printing-of-RootImageOptions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'backport-systemctl-fix-printing-of-RootImageOptions.patch')
-rw-r--r--backport-systemctl-fix-printing-of-RootImageOptions.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/backport-systemctl-fix-printing-of-RootImageOptions.patch b/backport-systemctl-fix-printing-of-RootImageOptions.patch
new file mode 100644
index 0000000..f841729
--- /dev/null
+++ b/backport-systemctl-fix-printing-of-RootImageOptions.patch
@@ -0,0 +1,49 @@
+From 64d833dfa6bcac6d4c991447bfd63d6bcda1ba6b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 27 Sep 2024 20:17:12 +0200
+Subject: [PATCH] systemctl: fix printing of RootImageOptions
+
+The type is a(ss), so a custom printer is required.
+
+Fixes https://github.com/systemd/systemd/issues/33967.
+
+(cherry picked from commit 69c751c61cb2b386afe51f03b58f8f7ceeeb643e)
+(cherry picked from commit 28ced52894cf6921d1fe9831f2def29de164e189)
+---
+ src/systemctl/systemctl-show.c | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/src/systemctl/systemctl-show.c b/src/systemctl/systemctl-show.c
+index 5d1eb492e1..7fe7f423f6 100644
+--- a/src/systemctl/systemctl-show.c
++++ b/src/systemctl/systemctl-show.c
+@@ -1742,6 +1742,29 @@ static int print_property(const char *name, const char *expected_value, sd_bus_m
+ return bus_log_parse_error(r);
+
+ return 1;
++
++ } else if (streq(name, "RootImageOptions")) {
++ const char *a, *p;
++
++ /* In config files, the syntax allows the partition name to be omitted. Here, we
++ * always print the partition name, also because we have no way of knowing if it was
++ * originally omitted or not. We also print the partitions on separate lines. */
++
++ r = sd_bus_message_enter_container(m, SD_BUS_TYPE_ARRAY, "(ss)");
++ if (r < 0)
++ return bus_log_parse_error(r);
++
++ while ((r = sd_bus_message_read(m, "(ss)", &a, &p)) > 0)
++ bus_print_property_valuef(name, expected_value, flags, "%s:%s", a, p);
++ if (r < 0)
++ return bus_log_parse_error(r);
++
++ r = sd_bus_message_exit_container(m);
++ if (r < 0)
++ return bus_log_parse_error(r);
++
++ return 1;
++
+ } else if (streq(name, "MountImages")) {
+ _cleanup_free_ char *paths = NULL;
+