lepreau@utah-cs.UUCP (Jay Lepreau) (01/06/84)
Index: lib/libc/gen/ctime.c 4.2BSD Fix
Description:
For negative GMT times, which in the USA can be positive local
times, ctime prints out garbage. Matter of fact it is so garbaged
that the year has a ^A in it! In particular, this is a problem
with local times of 0. gmtime() turns out to be the culprit.
Repeat-By:
main() /* in timezones west of greenwich */
{ int zero = 0;
printf("%s", ctime(&zero));
}
Fix:
This happened cause the types of all the "time" variables in ctime.c
have been changed from long in 4.1 to unsigned long in 4.2. Note that
sys/types.h says that time_t is long, as do all the man pages. Plus I
seem to remember seeing somewhere in the Unix docco that negative
times are supposed to "work." And finally, 7fffffff is year 2038, and
I expect Unix will be long dead by then, even if the world isn't.
All you really have to change are the types in gmtime() itself:
206c206
< unsigned long *tim;
---
> long *tim;
209c209
< unsigned long hms, day;
---
> long hms, day;