| lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | #include <stdlib.h> | 
|  | 2 | #include <time.h> | 
|  | 3 | #include <string.h> | 
|  | 4 | #include <stdio.h> | 
|  | 5 |  | 
|  | 6 | struct { | 
|  | 7 | const char *	env; | 
|  | 8 | time_t	expected; | 
|  | 9 | } tests[] = { | 
|  | 10 | {"MST",	832935315}, | 
|  | 11 | {"",		832910115}, | 
|  | 12 | {":UTC",	832910115}, | 
|  | 13 | {"UTC",	832910115}, | 
|  | 14 | {"UTC0",	832910115} | 
|  | 15 | }; | 
|  | 16 |  | 
|  | 17 |  | 
|  | 18 | int | 
|  | 19 | main (int argc, char ** argv) | 
|  | 20 | { | 
|  | 21 | int errors = 0; | 
|  | 22 | struct tm tm; | 
|  | 23 | time_t t; | 
|  | 24 | unsigned int i; | 
|  | 25 |  | 
|  | 26 | memset (&tm, 0, sizeof (tm)); | 
|  | 27 | tm.tm_isdst = 0; | 
|  | 28 | tm.tm_year  = 96;	/* years since 1900 */ | 
|  | 29 | tm.tm_mon   = 4; | 
|  | 30 | tm.tm_mday  = 24; | 
|  | 31 | tm.tm_hour  =  3; | 
|  | 32 | tm.tm_min   = 55; | 
|  | 33 | tm.tm_sec   = 15; | 
|  | 34 |  | 
|  | 35 | for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) | 
|  | 36 | { | 
|  | 37 | setenv ("TZ", tests[i].env, 1); | 
|  | 38 | t = mktime (&tm); | 
|  | 39 | if (t != tests[i].expected) | 
|  | 40 | { | 
|  | 41 | printf ("%s: flunked test %u (expected %lu, got %lu)\n", | 
|  | 42 | argv[0], i, (long) tests[i].expected, (long) t); | 
|  | 43 | ++errors; | 
|  | 44 | } | 
|  | 45 | } | 
|  | 46 | if (errors == 0) | 
|  | 47 | { | 
|  | 48 | puts ("No errors."); | 
|  | 49 | return EXIT_SUCCESS; | 
|  | 50 | } | 
|  | 51 | else | 
|  | 52 | { | 
|  | 53 | printf ("%d errors.\n", errors); | 
|  | 54 | return EXIT_FAILURE; | 
|  | 55 | } | 
|  | 56 | } |