From 9fd0a7a96c8525289d7072fa688579be6418ec30 Mon Sep 17 00:00:00 2001 From: J William Piggott Date: Sun, 8 Oct 2017 16:06:24 -0400 Subject: lib/timeutils: add get_gmtoff() This new function returns the GMT offset relative to its argument. It is used in this patch to fix two bugs: 1) On platforms that the tm struct excludes tm_gmtoff, hwclock assumes a one hour DST offset. This can cause an incorrect kernel timezone setting. For example: Master branch tested with tm_gmtoff illustrates the correct offset: $ TZ="Australia/Lord_Howe" hwclock --hctosys --test | grep settimeofday Calling settimeofday(1507494204.192398, -660) Master branch tested without tm_gmtoff has an incorrect offset: $ TZ="Australia/Lord_Howe" hwclock --hctosys --test | grep settimeofday Calling settimeofday(1507494249.193852, -690) Patched tested without tm_gmtoff has the correct offset: $ TZ="Australia/Lord_Howe" hwclock --hctosys --test | grep settimeofday Calling settimeofday(1507494260.194208, -660) 2) ISO 8601 'extended' format requires all time elements to use a colon (:). Current invalid ISO 8601: $ hwclock 2017-10-08 16:25:17.895462-0400 Patched: $ hwclock 2017-10-08 16:25:34.141895-04:00 Also required by this change: login-utils/last.c: increase ISO out_len and in_len by one to accommodate the addition of the timezone colon. Signed-off-by: J William Piggott --- login-utils/last.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'login-utils/last.c') diff --git a/login-utils/last.c b/login-utils/last.c index f989836ba..f2e8f834e 100644 --- a/login-utils/last.c +++ b/login-utils/last.c @@ -145,8 +145,8 @@ static struct last_timefmt timefmts[] = { }, [LAST_TIMEFTM_ISO8601] = { .name = "iso", - .in_len = 24, - .out_len = 26, + .in_len = 25, + .out_len = 27, .in_fmt = LAST_TIMEFTM_ISO8601, .out_fmt = LAST_TIMEFTM_ISO8601 } -- cgit v1.2.3-55-g7522