return -ENOMEM;
LIST_FOREACH(value, k, p->values) {
- char *buf;
+ _cleanup_free_ char *buf = NULL;
const char *t;
size_t l;
bool b;
t = timer_base_to_string(k->base);
- assert(endswith(t, "Sec"));
- /* s/Sec/USec/ */
- l = strlen(t);
- if (!(buf = new(char, l+2)))
- return -ENOMEM;
+ if (endswith(t, "Sec")) {
+
+ /* s/Sec/USec/ */
+ l = strlen(t);
+ buf = new(char, l+2);
+ if (!buf)
+ return -ENOMEM;
- memcpy(buf, t, l-3);
- memcpy(buf+l-3, "USec", 5);
+ memcpy(buf, t, l-3);
+ memcpy(buf+l-3, "USec", 5);
+ } else {
+ buf = strdup(t);
+ if (!buf)
+ return -ENOMEM;
+ }
b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) &&
dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) &&
dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &k->next_elapse) &&
dbus_message_iter_close_container(&sub, &sub2);
- free(buf);
if (!b)
return -ENOMEM;
}
static const BusProperty bus_timer_properties[] = {
{ "Unit", bus_timer_append_unit, "s", 0 },
{ "Timers", bus_timer_append_timers, "a(stt)", 0 },
- { "NextElapseUSec", bus_property_append_usec, "t", offsetof(Timer, next_elapse) },
+ { "NextElapseUSec", bus_property_append_usec, "t", offsetof(Timer, next_elapse_monotonic) },
+ { "NextElapseUSecRealtime", bus_property_append_usec, "t", offsetof(Timer, next_elapse_realtime) },
{ "Result", bus_timer_append_timer_result,"s", offsetof(Timer, result) },
{ NULL, }
};