1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <string.h> 4 #include <time.h> 5 6 int 7 main (void) 8 { 9 struct tm time_str, *tm; 10 time_t t; 11 char daybuf[20]; 12 int result; 13 14 time_str.tm_year = 2001 - 1900; 15 time_str.tm_mon = 7 - 1; 16 time_str.tm_mday = 4; 17 time_str.tm_hour = 0; 18 time_str.tm_min = 0; 19 time_str.tm_sec = 1; 20 time_str.tm_isdst = -1; 21 22 if (mktime (&time_str) == -1) 23 { 24 (void) puts ("-unknown-"); 25 result = 1; 26 } 27 else 28 { 29 (void) strftime (daybuf, sizeof (daybuf), "%A", &time_str); 30 (void) puts (daybuf); 31 result = strcmp (daybuf, "Wednesday") != 0; 32 } 33 34 setenv ("TZ", "EST+5", 1); 35 #define EVENING69 1 * 60 * 60 + 2 * 60 + 29 36 t = EVENING69; 37 tm = localtime (&t); 38 if (tm == NULL) 39 { 40 (void) puts ("localtime returned NULL"); 41 result = 1; 42 } 43 else 44 { 45 time_str = *tm; 46 t = mktime (&time_str); 47 if (t != EVENING69) 48 { 49 printf ("mktime returned %ld, expected %d\n", 50 (long) t, EVENING69); 51 result = 1; 52 } 53 else 54 (void) puts ("Dec 31 1969 EST test passed"); 55 56 setenv ("TZ", "CET-1", 1); 57 t = mktime (&time_str); 58 if (t != (time_t) -1) 59 { 60 printf ("mktime returned %ld, expected -1\n", (long) t); 61 result = 1; 62 } 63 else 64 (void) puts ("Dec 31 1969 CET test passed"); 65 } 66 67 return result; 68 } 69