> 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
This is correct. And add DOS, Windows, and NT. > 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 This is correct. > 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. Your comment about the word GMT vs. UTC is correct. I would add further that struct timezone and gettimeofday are much later BSD additions and were not part of any early versions of Bell Labs UNIX. (You can tell because only the Berkeley guys used a compiler that supported long names; we were limited to 8 characters). I worked on System III UNIX at Bell Labs and the only support for time zones was the TZ environment variable - which only supported signed integer hour offsets. This was all we needed. I worked on GCOS prior to that and it ran on local time, even if you were a dial-up timeshare user. UNIX was really cool because each dial-up user could set his own time zone. After working on a mainframe that displayed time only in fractional millihours, I can't tell you how cool it was that UNIX used a double-register (32-bit) integer to encode the time of day, had a TZ variable, and displayed time as HH:MM:SS. And all this at 2400 baud instead of 300. It was very clever. As far as I remember in the code, and in practice, time_t was just a cute way to encode a date; nothing more. There was no more thought about leap seconds on our PDP 11/34 than on my wrist watch. After all, we usually turned the computers off every night when we left work. The thought of a computer, back then, being a continuous count of sacred SI seconds is ridiculous. That's what WWV was for. When the computer time was too wrong, you just set it right. Remember also that none of these computers had battery clocks so you had to reset the clock every time you booted. I remember how cool the first DOS PC I saw was because it kept time across a boot. It was very clever. > 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 So, I think I'm agreeing with you, Markus. The point is, anyone that thinks 1970's UNIX was some kind of sophisticated operating system with a modern timescale algorithm just wasn't there. /tvb http://www.LeapSecond.com