From fa6dee52ca3db9e5922c59d9e386c70266f0b2b0 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 5 Feb 2018 15:27:42 +0900 Subject: [PATCH 1/4] systemctl: show Timers{Monotonic,Calendar}= --- src/systemctl/systemctl.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 5732d88a17..99136d4a0d 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4920,7 +4920,7 @@ static int print_property(const char *name, sd_bus_message *m, const char *conte return 0; - } else if (contents[1] == SD_BUS_TYPE_STRUCT_BEGIN && streq(name, "Timers")) { + } else if (contents[1] == SD_BUS_TYPE_STRUCT_BEGIN && streq(name, "TimersMonotonic")) { const char *base; uint64_t value, next_elapse; @@ -4931,7 +4931,7 @@ static int print_property(const char *name, sd_bus_message *m, const char *conte while ((r = sd_bus_message_read(m, "(stt)", &base, &value, &next_elapse)) > 0) { char timespan1[FORMAT_TIMESPAN_MAX], timespan2[FORMAT_TIMESPAN_MAX]; - print_prop(base, "{ value=%s ; next_elapse=%s }", + print_prop(name, "{ %s=%s ; next_elapse=%s }", base, format_timespan(timespan1, sizeof(timespan1), value, 0), format_timespan(timespan2, sizeof(timespan2), next_elapse, 0)); } @@ -4944,6 +4944,29 @@ static int print_property(const char *name, sd_bus_message *m, const char *conte return 0; + } else if (contents[1] == SD_BUS_TYPE_STRUCT_BEGIN && streq(name, "TimersCalendar")) { + const char *base, *spec; + uint64_t next_elapse; + + r = sd_bus_message_enter_container(m, SD_BUS_TYPE_ARRAY, "(sst)"); + if (r < 0) + return bus_log_parse_error(r); + + while ((r = sd_bus_message_read(m, "(sst)", &base, &spec, &next_elapse)) > 0) { + char timestamp[FORMAT_TIMESTAMP_MAX]; + + print_prop(name, "{ %s=%s ; next_elapse=%s }", base, spec, + format_timestamp(timestamp, sizeof(timestamp), next_elapse)); + } + 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 0; + } else if (contents[1] == SD_BUS_TYPE_STRUCT_BEGIN && startswith(name, "Exec")) { ExecStatusInfo info = {}; From eabc13c78109232f6d9b47dbbe692d9c82a09866 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 1 Feb 2018 15:18:17 +0900 Subject: [PATCH 2/4] systemctl: update 'show' format for socket units Before this. ``` $ systemctl show systemd-journald.socket | grep Listen ListenStream=/run/systemd/journal/stdout ListenDatagram=/run/systemd/journal/socket $ systemctl show --property ListenStream systemd-journald.socket $ systemctl show --property ListenDatagram systemd-journald.socket $ systemctl show --property Listen systemd-journald.socket ListenStream=/run/systemd/journal/stdout ListenDatagram=/run/systemd/journal/socket ``` After this. ``` $ systemctl show systemd-journald.socket | grep Listen Listen=/run/systemd/journal/stdout (Stream) Listen=/run/systemd/journal/socket (Datagram) $ systemctl show --property Listen systemd-journald.socket ListenStream=/run/systemd/journal/stdout ListenDatagram=/run/systemd/journal/socket ``` Fixes #8064. --- src/systemctl/systemctl.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 99136d4a0d..dea7d3a859 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4907,10 +4907,7 @@ static int print_property(const char *name, sd_bus_message *m, const char *conte return bus_log_parse_error(r); while ((r = sd_bus_message_read(m, "(ss)", &type, &path)) > 0) - if (arg_value) - puts(path); - else - printf("Listen%s=%s\n", type, path); + print_prop(name, "%s (%s)", path, type); if (r < 0) return bus_log_parse_error(r); From c7366cf17f8de1da260dd713ef8785d9011dfb4c Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 1 Feb 2018 15:22:00 +0900 Subject: [PATCH 3/4] systemctl: update 'show' format for path units Before this. ``` $ systemctl show cups.path | grep ^Path PathExistsGlob=/var/spool/cups/d* $ systemctl show --property PathExistsGlob cups.path $ systemctl show --property Paths cups.path PathExistsGlob=/var/spool/cups/d* ``` After this. ``` $ systemctl show cups.path | grep ^Path Paths=/var/spool/cups/d* (PathExistsGlob) $ systemctl show --property Paths cups.path Paths=/var/spool/cups/d* (PathExistsGlob) ``` --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index dea7d3a859..a9bcc490dd 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4889,7 +4889,7 @@ static int print_property(const char *name, sd_bus_message *m, const char *conte return bus_log_parse_error(r); while ((r = sd_bus_message_read(m, "(ss)", &type, &path)) > 0) - print_prop(type, "%s", path); + print_prop(name, "%s (%s)", path, type); if (r < 0) return bus_log_parse_error(r); From 009192bb0397c1880586a56513d7054a7761ef01 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 1 Feb 2018 19:39:30 +0900 Subject: [PATCH 4/4] systemctl: show: use EnvironmentFiles= instead of EnvironmentFile= EnvironmentFile= is used in the unit file, but in the dbus, the related field name is EnvironmentFiles=. As the other variables, let's use the field name instead of the name used in the unit file setting. --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index a9bcc490dd..99ad2fc4b0 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4870,7 +4870,7 @@ static int print_property(const char *name, sd_bus_message *m, const char *conte return bus_log_parse_error(r); while ((r = sd_bus_message_read(m, "(sb)", &path, &ignore)) > 0) - print_prop("EnvironmentFile", "%s (ignore_errors=%s)", path, yes_no(ignore)); + print_prop(name, "%s (ignore_errors=%s)", path, yes_no(ignore)); if (r < 0) return bus_log_parse_error(r);