mktime() failures under PCTS testing
Paul Eggert
eggert at twinsun.com
Wed Aug 31 21:35:17 UTC 1994
If you'll recall, the tz package `mktime' normally returns -1 when
given a time in a `spring-forward' gap, but the NIST-PCTS:151-2 test
suite, Version 1.4, (1993-12-03), claims that this is a bug.
In March I submitted a formal Defect Report about this to the
committee responsible for the C Standard, and have just received a
copy of the draft response (SC22/WG14 DR#136). This response has been
approved by WG14 but is subject to a final review, so it is not
official yet. The response reads as follows:
The Standard does not specify the behavior precisely enough to
preclude `mktime' from returning a value of `(time_t)-1' and
leaving the `tm_isdst' member set to -1 in such situations.
In other words, assuming this response becomes official as expected,
PCTS must not insist that mktime yield a value other than -1 in such
situations. Perhaps someone who's familiar with PCTS (which I am not)
can forward this info to PCTS's maintainers.
Here's the example program that I submitted as part of Defect Report #136.
According to the draft response, a conforming implementation in a
U.S. locale can print `mktime failed' when presented with the
following program, since the requested time is in a `spring-forward' gap.
#include <stdio.h>
#include <time.h>
int main() {
struct tm t;
time_t r;
/* 1994-04-03 02:30:00 */
t.tm_year = 1994 - 1900; t.tm_mon = 3; t.tm_mday = 3;
t.tm_hour = 2; t.tm_min = 30; t.tm_sec = 0;
t.tm_isdst = -1; /* i.e. unknown */
r = mktime(&t);
if (r == -1)
printf("mktime failed\n");
else
printf("%s", ctime(&r));
return 0;
}
More information about the tz
mailing list