Fri Apr 10 23:16:51 UTC 1987
In my experience, the "timezone" variable on USG systems is always
positive -- that is, application code subtracts its value from
the current time, rather than adding it. I have supplied a diff
for localtime.c so that if USG_COMPAT is defined, the value of the
global "timezone" variable is forced positive. This is based on
observations of Plexus System 3, Xenix System 3, and Xenix System 5.
I don't know how USG would treat negative offsets from GMT.
Observations presumably not made in Europe. You are correct in that
the sign of the "timezone" variable should be positive for time zones
such as those in the Western Hemisphere; however, it is not correct
to force the offset to be positive, as there are places where the
offset simply *isn't* positive (using the UNIX sign conventions).
The correct fix is
< timezone = s.ttis.tt_gmtoff;
> timezone = -s.ttis.tt_gmtoff;
< timezone = ttisp->tt_gmtoff;
> timezone = -ttisp->tt_gmtoff;
or something like that.
More information about the tz