From: Timo Sirainen Date: Sun, 5 Oct 2008 10:48:32 +0000 (+0300) Subject: Test if posix_fallocate() works already in configure. X-Git-Tag: 1.2.alpha2~21 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=19ee2dfe44a61df4d1a9c0b0b87e070204e6def2;p=thirdparty%2Fdovecot%2Fcore.git Test if posix_fallocate() works already in configure. --HG-- branch : HEAD --- diff --git a/configure.in b/configure.in index 15d1e44aa1..2c335f9e92 100644 --- a/configure.in +++ b/configure.in @@ -652,17 +652,37 @@ AC_TRY_COMPILE([ ]) dnl * Old glibcs have broken posix_fallocate(). Make sure not to use it. -AC_TRY_LINK([ - #define _XOPEN_SOURCE 600 - #include - #if defined(__GLIBC__) && (__GLIBC__ < 2 || __GLIBC_MINOR__ < 7) - possibly broken posix_fallocate - #endif -], [ - posix_fallocate(0, 0, 0); -], [ - AC_DEFINE(HAVE_POSIX_FALLOCATE,, Define if you have a working posix_fallocate()) +dnl * It may also be broken in AIX. +AC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[ + AC_TRY_RUN([ + #define _XOPEN_SOURCE 600 + #include + #include + #include + #include + #if defined(__GLIBC__) && (__GLIBC__ < 2 || __GLIBC_MINOR__ < 7) + possibly broken posix_fallocate + #endif + int main() { + int fd = creat("conftest.temp", 0600); + int ret; + if (fd == -1) { + perror("creat()"); + return 2; + } + ret = posix_fallocate(fd, 1024, 1024) < 0 ? 1 : 0; + unlink("conftest.temp"); + return ret; + } + ], [ + i_cv_posix_fallocate_works=yes + ], [ + i_cv_posix_fallocate_works=no + ]) ]) +if test $i_cv_posix_fallocate_works = yes; then + AC_DEFINE(HAVE_POSIX_FALLOCATE,, Define if you have a working posix_fallocate()) +fi dnl * OS specific options case "$host_os" in