* 0595f9a1c182a84581749823ef47c5f292e545f9 is borked, freezes shutdown
-* capability_bounding_set_drop not used.
-
-* recreate private socket on SIGUSR2
-
-* serialize condition execution information
+* capability_bounding_set_drop not used
* rework syslog.service being up logic in PID 1
* rsyslog.service should hook itself into syslog.target?
-* syslog.target should be pulled in by multi-user.target
-
-* don't strip facility from kmsg log messages as soon as that is possible.
+* syslog.target should be pulled in by multi-user.target?
* pull in .service from meta .targers AND vice versa too. i.e. syslog.target ←→ rsyslog.service, rpcbind similarly
Features:
+* don't strip facility from kmsg log messages as soon as that is possible.
+
+* recreate private socket on SIGUSR2
+
* optionally create watched directories in .path units
* Support --test based on current system state
condition_dump_list(u->meta.conditions, f, prefix);
+ if (dual_timestamp_is_set(&u->meta.condition_timestamp))
+ fprintf(f,
+ "%s\tCondition Timestamp: %s\n"
+ "%s\tCondition Result: %s\n",
+ prefix, strna(format_timestamp(timestamp1, sizeof(timestamp1), u->meta.condition_timestamp.realtime)),
+ prefix, yes_no(u->meta.condition_result));
+
for (d = 0; d < _UNIT_DEPENDENCY_MAX; d++) {
Unit *other;
dual_timestamp_serialize(f, "active-enter-timestamp", &u->meta.active_enter_timestamp);
dual_timestamp_serialize(f, "active-exit-timestamp", &u->meta.active_exit_timestamp);
dual_timestamp_serialize(f, "inactive-enter-timestamp", &u->meta.inactive_enter_timestamp);
+ dual_timestamp_serialize(f, "condition-timestamp", &u->meta.condition_timestamp);
+
+ if (dual_timestamp_is_set(&u->meta.condition_timestamp))
+ unit_serialize_item(u, f, "condition-result", yes_no(u->meta.condition_result));
/* End marker */
fputc('\n', f);
} else if (streq(l, "inactive-enter-timestamp")) {
dual_timestamp_deserialize(v, &u->meta.inactive_enter_timestamp);
continue;
+ } else if (streq(l, "condition-timestamp")) {
+ dual_timestamp_deserialize(v, &u->meta.condition_timestamp);
+ continue;
+ } else if (streq(l, "condition-result")) {
+ int b;
+
+ if ((b = parse_boolean(v)) < 0)
+ log_debug("Failed to parse condition result value %s", v);
+ else
+ u->meta.condition_result = b;
}
if ((r = UNIT_VTABLE(u)->deserialize_item(u, l, v, fds)) < 0)