match historical behavior for tm_gmtoff member of struct tm
authorNatanael Copa <ncopa@alpinelinux.org>
Thu, 13 Aug 2015 15:28:39 +0000 (17:28 +0200)
committerRich Felker <dalias@aerifal.cx>
Fri, 14 Aug 2015 00:47:46 +0000 (00:47 +0000)
commitc13f2af1fe1856e36dd1b2773cac05d5d72641dc
tree4c37476636be82f48d057379699f896433f18d9e
parente5b086e1d5fe52bf1553357ee790de86eda27bf1
match historical behavior for tm_gmtoff member of struct tm

tm_gmtoff is a nonstandard field, but on historical systems which have
this field, it stores the offset of the local time zone from GMT or
UTC. this is the opposite of the POSIX extern long timezone object and
the offsets used in POSIX-form TZ strings, which represent the offset
from local time to UTC. previously we were storing these negated
offsets in tm_gmtoff too.

programs which only used this field indirectly via strftime were not
affected since strftime performed the negation for presentation.
however, some programs and libraries accesse tm_gmtoff directly and
were obtaining negated time zone offsets.
src/time/__tz.c
src/time/localtime_r.c
src/time/mktime.c
src/time/strftime.c