| #include <stdlib.h> |
| #include <stdio.h> |
| #include <string.h> |
| #include <time.h> |
| |
| int |
| main (void) |
| { |
| struct tm time_str, *tm; |
| time_t t; |
| char daybuf[20]; |
| int result; |
| |
| time_str.tm_year = 2001 - 1900; |
| time_str.tm_mon = 7 - 1; |
| time_str.tm_mday = 4; |
| time_str.tm_hour = 0; |
| time_str.tm_min = 0; |
| time_str.tm_sec = 1; |
| time_str.tm_isdst = -1; |
| |
| if (mktime (&time_str) == -1) |
| { |
| (void) puts ("-unknown-"); |
| result = 1; |
| } |
| else |
| { |
| (void) strftime (daybuf, sizeof (daybuf), "%A", &time_str); |
| (void) puts (daybuf); |
| result = strcmp (daybuf, "Wednesday") != 0; |
| } |
| |
| setenv ("TZ", "EST+5", 1); |
| #define EVENING69 1 * 60 * 60 + 2 * 60 + 29 |
| t = EVENING69; |
| tm = localtime (&t); |
| if (tm == NULL) |
| { |
| (void) puts ("localtime returned NULL"); |
| result = 1; |
| } |
| else |
| { |
| time_str = *tm; |
| t = mktime (&time_str); |
| if (t != EVENING69) |
| { |
| printf ("mktime returned %ld, expected %d\n", |
| (long) t, EVENING69); |
| result = 1; |
| } |
| else |
| (void) puts ("Dec 31 1969 EST test passed"); |
| |
| setenv ("TZ", "CET-1", 1); |
| t = mktime (&time_str); |
| #define EVENING69_CET (EVENING69 - (5 - -1) * 60 * 60) |
| if (t != EVENING69_CET) |
| { |
| printf ("mktime returned %ld, expected %ld\n", |
| (long) t, (long) EVENING69_CET); |
| result = 1; |
| } |
| else |
| (void) puts ("Dec 31 1969 CET test passed"); |
| } |
| |
| return result; |
| } |