diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-07-16 20:02:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-16 20:02:26 +0200 |
commit | 3151b668c23b23d185cac5420b7abf8f5297d678 (patch) | |
tree | b20152aa71c4060de8b3702a08e6fa8d0ba3832e /src | |
parent | a483dc92c2ebce9fdc834b257c927df58d02a69b (diff) | |
parent | 4252171a94a0c7cb8f9ee180977465dc4fc0ec8e (diff) | |
download | systemd-3151b668c23b23d185cac5420b7abf8f5297d678.tar.gz systemd-3151b668c23b23d185cac5420b7abf8f5297d678.tar.bz2 systemd-3151b668c23b23d185cac5420b7abf8f5297d678.zip |
Merge pull request #13076 from keszybz/pr/13062
Timer formatting fixes
Diffstat (limited to 'src')
-rw-r--r-- | src/analyze/analyze.c | 20 | ||||
-rw-r--r-- | src/core/dbus-timer.c | 169 | ||||
-rw-r--r-- | src/network/networkctl.c | 20 | ||||
-rw-r--r-- | src/run/run.c | 2 | ||||
-rw-r--r-- | src/systemctl/systemctl.c | 17 |
5 files changed, 113 insertions, 115 deletions
diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index b7545c08e2..92727974d6 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -1080,7 +1080,7 @@ static int analyze_blame(int argc, char *argv[], void *userdata) { if (n <= 0) return n; - table = table_new("TIME", "UNIT"); + table = table_new("time", "unit"); if (!table) return log_oom(); @@ -1733,7 +1733,7 @@ static int dump_timespan(int argc, char *argv[], void *userdata) { return r; } - table = table_new("NAME", "VALUE"); + table = table_new("name", "value"); if (!table) return log_oom(); @@ -1805,7 +1805,7 @@ static int test_timestamp_one(const char *p) { return r; } - table = table_new("NAME", "VALUE"); + table = table_new("name", "value"); if (!table) return log_oom(); @@ -1859,11 +1859,13 @@ static int test_timestamp_one(const char *p) { if (r < 0) return r; - r = table_add_cell_stringf(table, &cell, "@%"PRI_USEC"%s%0*"PRI_USEC"", - usec / USEC_PER_SEC, - usec % USEC_PER_SEC ? "." : "", - usec % USEC_PER_SEC ? 6 : 0, - usec % USEC_PER_SEC); + if (usec % USEC_PER_SEC == 0) + r = table_add_cell_stringf(table, &cell, "@%"PRI_USEC, + usec / USEC_PER_SEC); + else + r = table_add_cell_stringf(table, &cell, "@%"PRI_USEC".%06"PRI_USEC"", + usec / USEC_PER_SEC, + usec % USEC_PER_SEC); if (r < 0) return r; @@ -1912,7 +1914,7 @@ static int test_calendar_one(usec_t n, const char *p) { if (r < 0) return log_error_errno(r, "Failed to format calendar specification '%s': %m", p); - table = table_new("NAME", "VALUE"); + table = table_new("name", "value"); if (!table) return log_oom(); diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c index 807ca8022a..2f61a5842d 100644 --- a/src/core/dbus-timer.c +++ b/src/core/dbus-timer.c @@ -137,6 +137,74 @@ const sd_bus_vtable bus_timer_vtable[] = { SD_BUS_VTABLE_END }; +static int timer_add_one_monotonic_spec( + Timer *t, + const char *name, + TimerBase base, + UnitWriteFlags flags, + usec_t usec, + sd_bus_error *error) { + + if (!UNIT_WRITE_FLAGS_NOOP(flags)) { + char ts[FORMAT_TIMESPAN_MAX]; + TimerValue *v; + + unit_write_settingf(UNIT(t), flags|UNIT_ESCAPE_SPECIFIERS, name, + "%s=%s", + timer_base_to_string(base), + format_timespan(ts, sizeof ts, usec, USEC_PER_MSEC)); + + v = new(TimerValue, 1); + if (!v) + return -ENOMEM; + + *v = (TimerValue) { + .base = base, + .value = usec, + }; + + LIST_PREPEND(value, t->values, v); + } + + return 1; +} + +static int timer_add_one_calendar_spec( + Timer *t, + const char *name, + TimerBase base, + UnitWriteFlags flags, + const char *str, + sd_bus_error *error) { + + _cleanup_(calendar_spec_freep) CalendarSpec *c = NULL; + int r; + + r = calendar_spec_from_string(str, &c); + if (r == -EINVAL) + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid calendar spec"); + if (r < 0) + return r; + + if (!UNIT_WRITE_FLAGS_NOOP(flags)) { + unit_write_settingf(UNIT(t), flags|UNIT_ESCAPE_SPECIFIERS, name, + "%s=%s", timer_base_to_string(base), str); + + TimerValue *v = new(TimerValue, 1); + if (!v) + return -ENOMEM; + + *v = (TimerValue) { + .base = base, + .calendar_spec = c, + }; + + LIST_PREPEND(value, t->values, v); + } + + return 1; +}; + static int bus_timer_set_transient_property( Timer *t, const char *name, @@ -181,7 +249,7 @@ static int bus_timer_set_transient_property( if (streq(name, "TimersMonotonic")) { const char *base_name; - usec_t usec = 0; + usec_t usec; bool empty = true; r = sd_bus_message_enter_container(message, 'a', "(st)"); @@ -193,26 +261,12 @@ static int bus_timer_set_transient_property( b = timer_base_from_string(base_name); if (b < 0 || b == TIMER_CALENDAR) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid timer base: %s", base_name); - - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - char ts[FORMAT_TIMESPAN_MAX]; - TimerValue *v; - - unit_write_settingf(u, flags|UNIT_ESCAPE_SPECIFIERS, name, "%s=%s", base_name, - format_timespan(ts, sizeof(ts), usec, USEC_PER_MSEC)); + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, + "Invalid timer base: %s", base_name); - v = new(TimerValue, 1); - if (!v) - return -ENOMEM; - - *v = (TimerValue) { - .base = b, - .value = usec, - }; - - LIST_PREPEND(value, t->values, v); - } + r = timer_add_one_monotonic_spec(t, name, b, flags, usec, error); + if (r < 0) + return r; empty = false; } @@ -239,36 +293,17 @@ static int bus_timer_set_transient_property( return r; while ((r = sd_bus_message_read(message, "(ss)", &base_name, &str)) > 0) { - _cleanup_(calendar_spec_freep) CalendarSpec *c = NULL; TimerBase b; b = timer_base_from_string(base_name); if (b != TIMER_CALENDAR) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid timer base: %s", base_name); + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, + "Invalid timer base: %s", base_name); - r = calendar_spec_from_string(str, &c); - if (r == -EINVAL) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid calendar spec: %s", str); + r = timer_add_one_calendar_spec(t, name, b, flags, str, error); if (r < 0) return r; - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - TimerValue *v; - - unit_write_settingf(u, flags|UNIT_ESCAPE_SPECIFIERS, name, "%s=%s", base_name, str); - - v = new(TimerValue, 1); - if (!v) - return -ENOMEM; - - *v = (TimerValue) { - .base = b, - .calendar_spec = TAKE_PTR(c), - }; - - LIST_PREPEND(value, t->values, v); - } - empty = false; } if (r < 0) @@ -292,9 +327,8 @@ static int bus_timer_set_transient_property( "OnUnitActiveSec", "OnUnitInactiveSec")) { - TimerValue *v; - TimerBase b = _TIMER_BASE_INVALID; - usec_t usec = 0; + TimerBase b; + usec_t usec; log_notice("Client is using obsolete %s= transient property, please use TimersMonotonic= instead.", name); @@ -306,30 +340,10 @@ static int bus_timer_set_transient_property( if (r < 0) return r; - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - char time[FORMAT_TIMESPAN_MAX]; - - unit_write_settingf(u, flags|UNIT_ESCAPE_SPECIFIERS, name, "%s=%s", name, - format_timespan(time, sizeof(time), usec, USEC_PER_MSEC)); - - v = new(TimerValue, 1); - if (!v) - return -ENOMEM; - - *v = (TimerValue) { - .base = b, - .value = usec, - }; - - LIST_PREPEND(value, t->values, v); - } - - return 1; + return timer_add_one_monotonic_spec(t, name, b, flags, usec, error); } else if (streq(name, "OnCalendar")) { - TimerValue *v; - _cleanup_(calendar_spec_freep) CalendarSpec *c = NULL; const char *str; log_notice("Client is using obsolete %s= transient property, please use TimersCalendar= instead.", name); @@ -338,28 +352,7 @@ static int bus_timer_set_transient_property( if (r < 0) return r; - if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - r = calendar_spec_from_string(str, &c); - if (r == -EINVAL) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid calendar spec"); - if (r < 0) - return r; - - unit_write_settingf(u, flags|UNIT_ESCAPE_SPECIFIERS, name, "%s=%s", name, str); - - v = new(TimerValue, 1); - if (!v) - return -ENOMEM; - - *v = (TimerValue) { - .base = TIMER_CALENDAR, - .calendar_spec = TAKE_PTR(c), - }; - - LIST_PREPEND(value, t->values, v); - } - - return 1; + return timer_add_one_calendar_spec(t, name, TIMER_CALENDAR, flags, str, error); } return 0; diff --git a/src/network/networkctl.c b/src/network/networkctl.c index 9d755c96d6..5f74f7b5cc 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -324,7 +324,7 @@ static int list_links(int argc, char *argv[], void *userdata) { (void) pager_open(arg_pager_flags); - table = table_new("IDX", "LINK", "TYPE", "OPERATIONAL", "SETUP"); + table = table_new("idx", "link", "type", "operational", "setup"); if (!table) return log_oom(); @@ -658,7 +658,7 @@ static int dump_address_labels(sd_netlink *rtnl) { if (r < 0) return r; - table = table_new("Label", "Prefix/Prefixlen"); + table = table_new("label", "prefix/prefixlen"); if (!table) return -ENOMEM; @@ -972,7 +972,7 @@ static int link_status_one( (void) sd_network_link_get_carrier_bound_to(info->ifindex, &carrier_bound_to); (void) sd_network_link_get_carrier_bound_by(info->ifindex, &carrier_bound_by); - table = table_new("DOT", "KEY", "VALUE"); + table = table_new("dot", "key", "value"); if (!table) return -ENOMEM; @@ -1274,7 +1274,7 @@ static int system_status(sd_netlink *rtnl, sd_hwdb *hwdb) { (void) sd_network_get_operational_state(&operational_state); operational_state_to_color(operational_state, &on_color_operational, &off_color_operational); - table = table_new("DOT", "KEY", "VALUE"); + table = table_new("dot", "key", "value"); if (!table) return -ENOMEM; @@ -1439,12 +1439,12 @@ static int link_lldp_status(int argc, char *argv[], void *userdata) { (void) pager_open(arg_pager_flags); - table = table_new("LINK", - "CHASSIS ID", - "SYSTEM NAME", - "CAPS", - "PORT ID", - "PORT DESCRIPTION"); + table = table_new("link", + "chassis id", + "system name", + "caps", + "port id", + "port description"); if (!table) return -ENOMEM; diff --git a/src/run/run.c b/src/run/run.c index c11b7f57ff..68a3750390 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -383,11 +383,11 @@ static int parse_argv(int argc, char *argv[]) { case ARG_ON_CALENDAR: { _cleanup_(calendar_spec_freep) CalendarSpec *cs = NULL; - /* Let's make sure the given calendar event is not in the past */ r = calendar_spec_from_string(optarg, &cs); if (r < 0) return log_error_errno(r, "Failed to parse calendar event specification: %m"); + /* Let's make sure the given calendar event is not in the past */ r = calendar_spec_next_usec(cs, now(CLOCK_REALTIME), NULL); if (r == -ENOENT) /* The calendar event is in the past — let's warn about this, but install it diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 10e372d3a4..3ce3e07bd7 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -5033,11 +5033,13 @@ static int print_property(const char *name, const char *expected_value, sd_bus_m return bus_log_parse_error(r); while ((r = sd_bus_message_read(m, "(stt)", &base, &v, &next_elapse)) > 0) { - char timespan1[FORMAT_TIMESPAN_MAX], timespan2[FORMAT_TIMESPAN_MAX]; + char timespan1[FORMAT_TIMESPAN_MAX] = "n/a", timespan2[FORMAT_TIMESPAN_MAX] = "n/a"; - bus_print_property_valuef(name, expected_value, value, "{ %s=%s ; next_elapse=%s }", base, - format_timespan(timespan1, sizeof(timespan1), v, 0), - format_timespan(timespan2, sizeof(timespan2), next_elapse, 0)); + (void) format_timespan(timespan1, sizeof timespan1, v, 0); + (void) format_timespan(timespan2, sizeof timespan2, next_elapse, 0); + + bus_print_property_valuef(name, expected_value, value, + "{ %s=%s ; next_elapse=%s }", base, timespan1, timespan2); } if (r < 0) return bus_log_parse_error(r); @@ -5057,10 +5059,11 @@ static int print_property(const char *name, const char *expected_value, sd_bus_m return bus_log_parse_error(r); while ((r = sd_bus_message_read(m, "(sst)", &base, &spec, &next_elapse)) > 0) { - char timestamp[FORMAT_TIMESTAMP_MAX]; + char timestamp[FORMAT_TIMESTAMP_MAX] = "n/a"; - bus_print_property_valuef(name, expected_value, value, "{ %s=%s ; next_elapse=%s }", base, spec, - format_timestamp(timestamp, sizeof(timestamp), next_elapse)); + (void) format_timestamp(timestamp, sizeof(timestamp), next_elapse); + bus_print_property_valuef(name, expected_value, value, + "{ %s=%s ; next_elapse=%s }", base, spec, timestamp); } if (r < 0) return bus_log_parse_error(r); |