From 5e0130c51e7b82ed82f08d5089cf7cbdbc6b3142 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 23 Nov 2010 11:12:17 -0800 Subject: Fix bug #7785 - atime limit. On a 64-bit time_t system make MAX_TIME_T the max value that can be represented in a struct tm. This allows applications to set times in the future beyond the 32-bit time_t limit (2037). This is only in source3/configure.in, needs adding to the waf configure/build system (but I'll need help with that). Jeremy. Autobuild-User: Jeremy Allison Autobuild-Date: Tue Nov 23 21:00:14 CET 2010 on sn-devel-104 --- source3/configure.in | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/source3/configure.in b/source3/configure.in index aedec9b4dd..f5a39ad79f 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -2219,6 +2219,31 @@ if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type]) fi +AC_CACHE_CHECK([for TIME_T_MAX],samba_cv_TIME_T_MAX,[ +AC_TRY_RUN([#include +main() { + struct tm *tm; + if (sizeof(time_t) == 8) { + time_t max_time = 0x7fffffffffffffffll; + tm = gmtime(&max_time); + /* This should fail with 32-bit tm_year. */ + if (tm == NULL) { + /* Max time_t that works with 32-bit int tm_year in struct tm. */ + max_time = 67768036191676799ll; + tm = gmtime(&max_time); + if (tm) { + exit(0); + } + } + } + exit(1); +}], +samba_cv_TIME_T_MAX=yes,samba_cv_TIME_T_MAX=no,samba_cv_TIME_T_MAX=cross)]) +if test x"$samba_cv_TIME_T_MAX" = x"yes"; then + AC_DEFINE(TIME_T_MAX,67768036191676799ll,[The maximum value of the 'time_t' type]) +fi + + AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[ AC_TRY_RUN([#include #include -- cgit