| #include <stdlib.h> | 
 | #include <time.h> | 
 | #include <string.h> | 
 | #include <stdio.h> | 
 |  | 
 | struct { | 
 |   const char *	env; | 
 |   time_t	expected; | 
 | } tests[] = { | 
 |   {"MST",	832935315}, | 
 |   {"",		832910115}, | 
 |   {":UTC",	832910115}, | 
 |   {"UTC",	832910115}, | 
 |   {"UTC0",	832910115} | 
 | }; | 
 |  | 
 |  | 
 | int | 
 | main (int argc, char ** argv) | 
 | { | 
 |   int errors = 0; | 
 |   struct tm tm; | 
 |   time_t t; | 
 |   unsigned int i; | 
 |  | 
 |   memset (&tm, 0, sizeof (tm)); | 
 |   tm.tm_isdst = 0; | 
 |   tm.tm_year  = 96;	/* years since 1900 */ | 
 |   tm.tm_mon   = 4; | 
 |   tm.tm_mday  = 24; | 
 |   tm.tm_hour  =  3; | 
 |   tm.tm_min   = 55; | 
 |   tm.tm_sec   = 15; | 
 |  | 
 |   for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) | 
 |     { | 
 |       setenv ("TZ", tests[i].env, 1); | 
 |       t = mktime (&tm); | 
 |       if (t != tests[i].expected) | 
 | 	{ | 
 | 	  printf ("%s: flunked test %u (expected %lu, got %lu)\n", | 
 | 		  argv[0], i, (long) tests[i].expected, (long) t); | 
 | 	  ++errors; | 
 | 	} | 
 |     } | 
 |   if (errors == 0) | 
 |     { | 
 |       puts ("No errors."); | 
 |       return EXIT_SUCCESS; | 
 |     } | 
 |   else | 
 |     { | 
 |       printf ("%d errors.\n", errors); | 
 |       return EXIT_FAILURE; | 
 |     } | 
 | } |