diff options
author | Jakub Jelinek <jakub@redhat.com> | 2004-12-03 10:17:07 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2004-12-03 10:17:07 +0000 |
commit | 2a561bf1e19f064e2f5689e961ea1f8e51bc14a0 (patch) | |
tree | 91e08d15ba52846a86a5b0d7a12dcb984c28ccd9 /time/tst-mktime3.c | |
parent | aa8a3b59b1603ce0855e5130cb060318c8e8c78d (diff) |
Updated to fedora-glibc-20041203T0935
Diffstat (limited to 'time/tst-mktime3.c')
-rw-r--r-- | time/tst-mktime3.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/time/tst-mktime3.c b/time/tst-mktime3.c new file mode 100644 index 0000000000..60d0e0b32c --- /dev/null +++ b/time/tst-mktime3.c @@ -0,0 +1,50 @@ +/* Test program for mktime bugs with out-of-range tm_sec values. */ + +#include <stdlib.h> +#include <stdio.h> +#include <time.h> + +struct tm tests[] = +{ + { .tm_sec = -1, .tm_mday = 1, .tm_year = 104 }, + { .tm_sec = 65, .tm_min = 59, .tm_hour = 23, .tm_mday = 31, + .tm_mon = 11, .tm_year = 101 } +}; +struct tm expected[] = +{ + { .tm_sec = 59, .tm_min = 59, .tm_hour = 23, .tm_mday = 31, + .tm_mon = 11, .tm_year = 103, .tm_wday = 3, .tm_yday = 364 }, + { .tm_sec = 5, .tm_mday = 1, .tm_year = 102, .tm_wday = 2 } +}; + +int +main (void) +{ + setenv ("TZ", "UTC", 1); + int i; + for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) + { + if (mktime (&tests[i]) < 0) + { + printf ("mktime %d failed\n", i); + return 1; + } +#define CHECK(name) \ + if (tests[i].name != expected[i].name) \ + { \ + printf ("test %d " #name " got %d expected %d\n", \ + i, tests[i].name, expected[i].name); \ + return 1; \ + } + CHECK (tm_sec) + CHECK (tm_min) + CHECK (tm_hour) + CHECK (tm_mday) + CHECK (tm_mon) + CHECK (tm_year) + CHECK (tm_wday) + CHECK (tm_yday) + CHECK (tm_isdst) + } + return 0; +} |