diff --git a/src/basic/special.h b/src/basic/special.h index d55b3289de..b9b7be7a7d 100644 --- a/src/basic/special.h +++ b/src/basic/special.h @@ -42,6 +42,7 @@ #define SPECIAL_SWAP_TARGET "swap.target" #define SPECIAL_NETWORK_ONLINE_TARGET "network-online.target" #define SPECIAL_TIME_SYNC_TARGET "time-sync.target" /* LSB's $time */ +#define SPECIAL_TIME_SET_TARGET "time-set.target" #define SPECIAL_BASIC_TARGET "basic.target" /* LSB compatibility */ diff --git a/src/core/timer.c b/src/core/timer.c index f42c86da76..32abdb74d7 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -99,13 +99,20 @@ static int timer_add_default_dependencies(Timer *t) { if (r < 0) return r; - LIST_FOREACH(value, v, t->values) - if (v->base == TIMER_CALENDAR) { - r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, SPECIAL_TIME_SYNC_TARGET, true, UNIT_DEPENDENCY_DEFAULT); + LIST_FOREACH(value, v, t->values) { + const char *target; + + if (v->base != TIMER_CALENDAR) + continue; + + FOREACH_STRING(target, SPECIAL_TIME_SYNC_TARGET, SPECIAL_TIME_SET_TARGET) { + r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, target, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; - break; } + + break; + } } return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT);