# http://dovecot.org/list/dovecot/2010-October/054187.html --- dovecot-2.0.6/configure.in.orig 2010-10-22 15:19:28.468473082 +0100 +++ dovecot-2.0.6/configure.in 2010-10-22 15:25:47.913411076 +0100 @@ -273,7 +273,7 @@ sys/quota.h sys/fs/ufs_quota.h ufs/ufs/quota.h jfs/quota.h sys/fs/quota_common.h \ mntent.h sys/mnttab.h sys/event.h sys/time.h sys/mkdev.h linux/dqblk_xfs.h \ xfs/xqm.h execinfo.h ucontext.h malloc_np.h sys/utsname.h sys/vmount.h \ - sys/utsname.h glob.h linux/falloc.h) + sys/utsname.h glob.h sys/types.h linux/falloc.h) dnl * gcc specific options if test "x$ac_cv_c_compiler_gnu" = "xyes"; then @@ -369,7 +369,7 @@ setrlimit setproctitle seteuid setreuid setegid setresgid \ strtoull strtoll strtouq strtoq \ setpriority quotactl getmntent kqueue kevent backtrace_symbols \ - walkcontext dirfd clearenv malloc_usable_size glob fallocate) + walkcontext dirfd clearenv malloc_usable_size glob) AC_CHECK_LIB(rt, clock_gettime, [ AC_DEFINE(HAVE_CLOCK_GETTIME,, Define if you have the clock_gettime function) @@ -584,6 +584,40 @@ AC_DEFINE(PREAD_WRAPPERS,, Define if pread/pwrite needs _XOPEN_SOURCE 500) fi +dnl check for valid fallocate() function +dnl with 32 bits glibc 2.10, fallocate() exists but not fallocate64() +dnl when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64() +dnl and program can't be linked. +dnl AC_CHECK_FUNC can't catch such errors since it's redefining +dnl function prototype. +AC_SYS_LARGEFILE +AC_MSG_CHECKING([for valid fallocate() function]) +AC_LINK_IFELSE([ +AC_LANG_PROGRAM([[ +#define _GNU_SOURCE +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_LINUX_FALLOC_H +# include +#endif +#include +]],[[ + long ret; + + ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful); + + if (ret != 0) { + return 1; + } + ]])],[ +AC_MSG_RESULT([yes]) +AC_DEFINE(HAVE_FALLOCATE,1,[Have valid fallocate() function])],[ +AC_MSG_RESULT([no])]) + dnl * Old glibcs have broken posix_fallocate(). Make sure not to use it. dnl * It may also be broken in AIX. AC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[ @@ -760,7 +794,6 @@ AC_MSG_RESULT($visible) ]) -AC_SYS_LARGEFILE AC_CHECK_TYPES(_Bool) AC_CHECK_TYPE(uoff_t, [