10
10
#include < assert.h>
11
11
#include < math.h>
12
12
13
- void
14
- check_gmtime_localtime (time_t time)
13
+ void check_gmtime_localtime (time_t time)
15
14
{
16
15
char gmbuf[32 ], locbuf[32 ];
17
16
const char fmt[] = " %Y-%m-%d %H:%M:%S" ;
@@ -46,7 +45,7 @@ int main() {
46
45
tzset ();
47
46
printf (" tzname[0] set: %d\n " , strlen (tzname[0 ]) >= 3 );
48
47
printf (" tzname[1] set: %d\n " , strlen (tzname[1 ]) >= 3 );
49
-
48
+
50
49
// Verify gmtime() creates correct struct.
51
50
tm_ptr = gmtime (&xmas2002);
52
51
printf (" sec: %d\n " , tm_ptr->tm_sec );
@@ -60,7 +59,7 @@ int main() {
60
59
printf (" dst: %d\n " , tm_ptr->tm_isdst );
61
60
printf (" off: %ld\n " , (long )tm_ptr->tm_gmtoff );
62
61
printf (" zone: %s\n " , tm_ptr->tm_zone );
63
-
62
+
64
63
// Verify timegm() reverses gmtime; run through an entire year in half hours.
65
64
int timegmOk = 1 ;
66
65
for (int i = 0 ; i < 2 *24 *266 ; ++i) {
@@ -75,14 +74,14 @@ int main() {
75
74
timegmOk = 0 ;
76
75
}
77
76
printf (" timegm <-> gmtime: %d\n " , timegmOk);
78
-
77
+
79
78
// Verify gmtime_r() doesn't clobber static data.
80
79
time_t t1 = 0 ;
81
80
struct tm tm1;
82
81
gmtime_r (&t1, &tm1);
83
82
printf (" old year still: %d\n " , tm_ptr->tm_year );
84
83
printf (" new year: %d\n " , tm1.tm_year );
85
-
84
+
86
85
// Verify localtime() picks up timezone data.
87
86
struct tm tm_winter, tm_summer;
88
87
if (localtime_r (&xmas2002, &tm_winter) != &tm_winter) printf (" localtime_r failed\n " );
@@ -152,7 +151,7 @@ int main() {
152
151
tm2.tm_hour != tm_local.tm_hour || tm2.tm_mday != tm_local.tm_mday ||
153
152
tm2.tm_mon != tm_local.tm_mon || tm2.tm_year != tm_local.tm_year ||
154
153
tm2.tm_wday != tm_local.tm_wday || tm2.tm_yday != tm_local.tm_yday );
155
-
154
+
156
155
printf (" mktime parameter is equivalent to localtime return: %d\n " , mktimeOk);
157
156
158
157
// Verify that mktime is able to guess what the dst is. It might get it wrong
@@ -249,6 +248,7 @@ int main() {
249
248
check_gmtime_localtime (-2147483649 );
250
249
check_gmtime_localtime (253402300799 ); // end of year 9999
251
250
check_gmtime_localtime (-62135596800 ); // beginning of year 1
251
+ check_gmtime_localtime (0x83d4d9a5 ); // some time in 2040 (time_t > MAX_INT32)
252
252
253
253
// check that localtime sets tm_yday correctly whenever the day rolls over (issue #17635)
254
254
// prior to being fixed, tm_yday did not increment correctly at epoch time 1049061599 (2003-03-31 00:00:00) in CET time
0 commit comments