Subject: Re: lib/10521: y2k bug in mktime
To: Andrew Brown <atatat@atatdot.net>
From: Wolfgang Rupprecht <wolfgang@wsrcc.com>
List: netbsd-bugs
Date: 07/06/2000 08:57:03
Andrew Brown writes:
> that's because the tm_year member of struct tm is defined to be the
> number of years since 1900.  man localtime(3).  the programmer is
> expected to convert dates to this format.

It seems that everyone but me remembered that tm_year is still based
on a 1900 offset.  I guess we should note this in the
ctime(3)/mktime(3) man page, which is what I looked at to remind
myself of the calling convention.

The fact that most other code has been fixed to deal gracefully with
4-digit years leads one to *assume* that the rest of the routines will
follow the principal of least surprise.  Since the computer can DTRT
in this case I wonder if it wouldn't be better to have mktime()
understand the normal windowing hack of small-number means offset from
some epoch (1900, or denis richie's birthday or whatever) and
large-number means the more conventional year in 4-digit notation.

The beauty of "standards".  Some of them are down-right
counter-intuitive.

-wolfgang
-- 
Wolfgang Rupprecht    <wolfgang@wsrcc.com>     http://www.wsrcc.com/wolfgang/
DGPS signals via the Internet  http://www.wsrcc.com/wolfgang/gps/dgps-ip.html