1 | #include <stdlib.h> |
---|---|
2 | #include <stdio.h> |
3 | #include <string.h> |
4 | #include <time.h> |
5 | |
6 | static int |
7 | do_test (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 (s: "-unknown-"); |
25 | result = 1; |
26 | } |
27 | else |
28 | { |
29 | (void) strftime (daybuf, sizeof (daybuf), "%A", &time_str); |
30 | (void) puts (s: daybuf); |
31 | result = strcmp (daybuf, "Wednesday") != 0; |
32 | } |
33 | |
34 | setenv (name: "TZ", value: "EST+5", replace: 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 (s: "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 (format: "mktime returned %ld, expected %d\n", |
50 | (long) t, EVENING69); |
51 | result = 1; |
52 | } |
53 | else |
54 | (void) puts (s: "Dec 31 1969 EST test passed"); |
55 | |
56 | setenv (name: "TZ", value: "CET-1", replace: 1); |
57 | t = mktime (&time_str); |
58 | #define EVENING69_CET (EVENING69 - (5 - -1) * 60 * 60) |
59 | if (t != EVENING69_CET) |
60 | { |
61 | printf (format: "mktime returned %ld, expected %ld\n", |
62 | (long) t, (long) EVENING69_CET); |
63 | result = 1; |
64 | } |
65 | else |
66 | (void) puts (s: "Dec 31 1969 CET test passed"); |
67 | } |
68 | |
69 | return result; |
70 | } |
71 | |
72 | #define TEST_FUNCTION do_test () |
73 | #include "../test-skeleton.c" |
74 |