diff options
Diffstat (limited to 'src/core/main.c')
-rw-r--r-- | src/core/main.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/core/main.c b/src/core/main.c index 8920d70d5d..473dc0920e 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -83,6 +83,7 @@ #include "switch-root.h" #include "sysctl-util.h" #include "terminal-util.h" +#include "time-util.h" #include "umask-util.h" #include "user-util.h" #include "util.h" @@ -1598,11 +1599,18 @@ static void initialize_clock(void) { */ (void) clock_reset_timewarp(); - r = clock_apply_epoch(); - if (r < 0) - log_error_errno(r, "Current system time is before build time, but cannot correct: %m"); - else if (r > 0) + ClockChangeDirection change_dir; + r = clock_apply_epoch(&change_dir); + if (r > 0 && change_dir == CLOCK_CHANGE_FORWARD) log_info("System time before build time, advancing clock."); + else if (r > 0 && change_dir == CLOCK_CHANGE_BACKWARD) + log_info("System time is further ahead than %s after build time, resetting clock to build time.", + FORMAT_TIMESPAN(CLOCK_VALID_RANGE_USEC_MAX, USEC_PER_DAY)); + else if (r < 0 && change_dir == CLOCK_CHANGE_FORWARD) + log_error_errno(r, "Current system time is before build time, but cannot correct: %m"); + else if (r < 0 && change_dir == CLOCK_CHANGE_BACKWARD) + log_error_errno(r, "Current system time is further ahead %s after build time, but cannot correct: %m", + FORMAT_TIMESPAN(CLOCK_VALID_RANGE_USEC_MAX, USEC_PER_DAY)); } static void apply_clock_update(void) { |