Subject: Re: Y2038, was as long as we're hitting FFS...
To: None <tech-kern@netbsd.org>
From: Greg A. Woods <woods@most.weird.com>
List: tech-kern
Date: 03/26/1999 16:10:17
[ On Thursday, March 25, 1999 at 12:07:16 (-0800), Jason Thorpe wrote: ]
> Subject: Re: Y2038, was as long as we're hitting FFS... 
>
> On 25 Mar 1999 14:48:58 -0500 
>  "Perry E. Metzger" <perry@piermont.com> wrote:
>  > 
>  > Or we could do another gross hack that is even less intrusive.
>  > 
>  > If we declare the times in seconds in the inodes to be UNSIGNED, we
>  > gain another 68 years.
> 
> ...but you still have to version the inode.

I don't think so.

If you go back to kre's recollections of changing time_t to unsigned
(1998/06/03 tech-userlevel, "signed vs unsigned time_t") you'll find
that the only obvious problem found at the time was how to generate a
representation of zero in some more human acceptable format.  If you fix
that then the entire system can change to use an u_int32_t for time_t
and no versioning is necessary anywhere but in the shared libc.  I'd be
extremely surprised if anything in the kernel actually relied on having
negative values for time_t, and wasn't a bug in the first place.

I think it would be best for the library routines to treat zero as an
illegal value and not try to generate any representation in the local
timezone -- generate something that indicates the timestamp is unset or
illegal instead.  Of course its not too hard to get the arithemetic
right such that no change would be visible either.

I also think it's much easier to find the possible corner cases for
using a signed time_t than it is to change the width of time_t.

I note though that Steve Summit claims some Unix implementations
(presumably DU) are already successfully using 64-bit time_t.

-- 
							Greg A. Woods

+1 416 218-0098      VE3TCP      <gwoods@acm.org>      <robohack!woods>
Planix, Inc. <woods@planix.com>; Secrets of the Weird <woods@weird.com>