[systemd-devel] [PATCH 3/3] bus: fix bus_print_property with strv
Marc-Antoine Perennou
Marc-Antoine at Perennou.com
Wed Nov 6 00:59:22 PST 2013
---
src/libsystemd-bus/bus-util.c | 29 ++++++++++++-----------------
1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/src/libsystemd-bus/bus-util.c b/src/libsystemd-bus/bus-util.c
index 3bb1fb7..93e79e9 100644
--- a/src/libsystemd-bus/bus-util.c
+++ b/src/libsystemd-bus/bus-util.c
@@ -545,33 +545,28 @@ int bus_print_property(const char *name, sd_bus_message *property, bool all) {
case SD_BUS_TYPE_ARRAY:
if (streq(contents, "s")) {
- bool space = false;
- char tp;
- const char *cnt;
+ bool first = true;
+ const char *str;
r = sd_bus_message_enter_container(property, SD_BUS_TYPE_ARRAY, contents);
if (r < 0)
return r;
- r = sd_bus_message_peek_type(property, &tp, &cnt);
+ while((r = sd_bus_message_read_basic(property, SD_BUS_TYPE_STRING, &str)) > 0) {
+ if (first)
+ printf("%s=", name);
+
+ printf("%s%s", first ? "" : " ", str);
+
+ first = false;
+ }
if (r < 0)
return r;
- if (all || cnt) {
- const char *str;
-
+ if (first && all)
printf("%s=", name);
-
- while((r = sd_bus_message_read_basic(property, SD_BUS_TYPE_STRING, &str)) >= 0) {
- printf("%s%s", space ? " " : "", str);
-
- space = true;
- }
- if (r < 0)
- return r;
-
+ if (!first || all)
puts("");
- }
r = sd_bus_message_exit_container(property);
if (r < 0)
--
1.8.4.2
More information about the systemd-devel
mailing list