#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; }