]> git.ipfire.org Git - thirdparty/util-linux.git/commit
lib/timeutils: add get_gmtoff()
authorJ William Piggott <elseifthen@gmx.com>
Sun, 8 Oct 2017 20:06:24 +0000 (16:06 -0400)
committerJ William Piggott <elseifthen@gmx.com>
Fri, 10 Nov 2017 21:14:04 +0000 (16:14 -0500)
commit9fd0a7a96c8525289d7072fa688579be6418ec30
treed815e9e7b77e2493bbc8768486b988c4c4f7dbca
parent8c5a21f2187f78e9aab02f5f11dbbd226a4d795d
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 <elseifthen@gmx.com>
include/timeutils.h
lib/timeutils.c
login-utils/last.c
sys-utils/hwclock.c