back port changes from upstream gnulib to make this work on x32 https://bugs.gentoo.org/395641 --- cvs-1.12.12/lib/mktime.c +++ cvs-1.12.12/lib/mktime.c @@ -115,6 +115,13 @@ #define TM_YEAR_BASE 1900 verify (base_year_is_a_multiple_of_100, TM_YEAR_BASE % 100 == 0); +#if INT_MAX <= LONG_MAX / 2 +typedef long int long_int; +#else +typedef long long int long_int; +#endif +verify (long_int_is_wide_enough, INT_MAX == INT_MAX * (long_int) 2 / 2); + /* Return 1 if YEAR + TM_YEAR_BASE is a leap year. */ static inline int leapyear (long int year) @@ -167,8 +174,6 @@ int year0, int yday0, int hour0, int min0, int sec0) { verify (C99_integer_division, -1 / 2 == 0); - verify (long_int_year_and_yday_are_wide_enough, - INT_MAX <= LONG_MAX / 2 || TIME_T_MAX <= UINT_MAX); /* Compute intervening leap days correctly even if year is negative. Take care to avoid integer overflow here. */