Fact 1 is that there is a *lot* of Unix code out there that depends on
1 day being represented by a 86400 increment in time_t, and that is what
POSIX.1:2001 now explicitely requires the system to provide. This excludes
in practice the option to make time_t an encoding of TAI+10s.

Fact 2 is that the old 1980s pre-POSIX Unix manuals talked about GMT and
not UTC. This strongly suggests that the authors were unfamiliar with
both TAI and UTC. The "seconds" they refer to behave more like UT1
seconds than like TAI/SI seconds, i.e. they are Earth rotation angles
and not Caesium oscillations. There are in the long run as many UT1
seconds as there are UTC-non-leap seconds. The authors of Unix also
assumed that local civilian time zones and GMT differ only by an integer
number of minutes (see struct timezone in man gettimeofday(2)). Today,
most local civilian times and UTC have exactly that connection.
Therefore we can conclude very convincingly that UTC non-leap seconds
represent the best modern interpretation of what the authors of Unix had
in mind. And POSIX.1-2001 wisely does specify now exactly that.

I rest my case.

Are there any more interesting problems with leap seconds than
misinterpretations of old Unix manuals?


Markus Kuhn, Computer Lab, Univ of Cambridge, GB | __oo_O..O_oo__

Reply via email to