bug in mktime() normalization?
Alan Perry
esprit at best.com
Thu Aug 21 16:08:19 UTC 1997
> Here's what UNIX98 has to say regarding this:
>
> >From your quote it appears that UNIX98 says the same thing that the C
> Standard says, which is to say, not much. The C Standard spec for
> mktime is terribly ambiguous and you've found one of the ambiguities.
> The C Standard says that mktime can return -1 if attempted in the
> ``spring forward gap'', but it doesn't say how mktime should determine
> whether one is in the gap.
>
> Any user program that messes in this area is relying on behavior that
> is not guaranteed by any standard. For what it's worth, the GNU C
> library's mktime agrees with the tz mktime on your example, whereas
> Solaris 2.5.1 and BSD/OS 3.0 have the other reasonable interpretation
> (i.e. both mktime invocations yield 575002800).
Back when I worked at Sun on the timezone code, this issue came up and
I could have changed mktime() to return -1 in this case. If I remember
right, the standard says mktime() returns -1 if the time cannot be
represented and, after thinking about, I concluded that the "spring
forward gap" could be represented. As I saw it, the only time that could
not be represented was time outside the range of a time_t.
I didn't think the standards explicitly mentioned this topic, but now that
I no longer work at Sun and don't even work on things remotely related to
what I was doing before, I don't see the current standards much.
alan perry
More information about the tz
mailing list