1010#include < assert.h>
1111#include < math.h>
1212
13- void
14- check_gmtime_localtime (time_t time)
13+ void check_gmtime_localtime (time_t time)
1514{
1615 char gmbuf[32 ], locbuf[32 ];
1716 const char fmt[] = " %Y-%m-%d %H:%M:%S" ;
@@ -46,7 +45,7 @@ int main() {
4645 tzset ();
4746 printf (" tzname[0] set: %d\n " , strlen (tzname[0 ]) >= 3 );
4847 printf (" tzname[1] set: %d\n " , strlen (tzname[1 ]) >= 3 );
49-
48+
5049 // Verify gmtime() creates correct struct.
5150 tm_ptr = gmtime (&xmas2002);
5251 printf (" sec: %d\n " , tm_ptr->tm_sec );
@@ -60,7 +59,7 @@ int main() {
6059 printf (" dst: %d\n " , tm_ptr->tm_isdst );
6160 printf (" off: %ld\n " , (long )tm_ptr->tm_gmtoff );
6261 printf (" zone: %s\n " , tm_ptr->tm_zone );
63-
62+
6463 // Verify timegm() reverses gmtime; run through an entire year in half hours.
6564 int timegmOk = 1 ;
6665 for (int i = 0 ; i < 2 *24 *266 ; ++i) {
@@ -75,14 +74,14 @@ int main() {
7574 timegmOk = 0 ;
7675 }
7776 printf (" timegm <-> gmtime: %d\n " , timegmOk);
78-
77+
7978 // Verify gmtime_r() doesn't clobber static data.
8079 time_t t1 = 0 ;
8180 struct tm tm1;
8281 gmtime_r (&t1, &tm1);
8382 printf (" old year still: %d\n " , tm_ptr->tm_year );
8483 printf (" new year: %d\n " , tm1.tm_year );
85-
84+
8685 // Verify localtime() picks up timezone data.
8786 struct tm tm_winter, tm_summer;
8887 if (localtime_r (&xmas2002, &tm_winter) != &tm_winter) printf (" localtime_r failed\n " );
@@ -152,7 +151,7 @@ int main() {
152151 tm2.tm_hour != tm_local.tm_hour || tm2.tm_mday != tm_local.tm_mday ||
153152 tm2.tm_mon != tm_local.tm_mon || tm2.tm_year != tm_local.tm_year ||
154153 tm2.tm_wday != tm_local.tm_wday || tm2.tm_yday != tm_local.tm_yday );
155-
154+
156155 printf (" mktime parameter is equivalent to localtime return: %d\n " , mktimeOk);
157156
158157 // Verify that mktime is able to guess what the dst is. It might get it wrong
@@ -249,6 +248,7 @@ int main() {
249248 check_gmtime_localtime (-2147483649 );
250249 check_gmtime_localtime (253402300799 ); // end of year 9999
251250 check_gmtime_localtime (-62135596800 ); // beginning of year 1
251+ check_gmtime_localtime (0x83d4d9a5 ); // some time in 2040 (time_t > MAX_INT32)
252252
253253 // check that localtime sets tm_yday correctly whenever the day rolls over (issue #17635)
254254 // 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