]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Test if posix_fallocate() works already in configure.
authorTimo Sirainen <tss@iki.fi>
Sun, 5 Oct 2008 10:48:32 +0000 (13:48 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 5 Oct 2008 10:48:32 +0000 (13:48 +0300)
--HG--
branch : HEAD

configure.in

index 15d1e44aa16c8a29d1bddb23e1306a7c49c92c0a..2c335f9e9279b7054ab65fdf4fb463228fe57dec 100644 (file)
@@ -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 <stdlib.h>
-  #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 <stdio.h>
+    #include <stdlib.h>
+    #include <fcntl.h>
+    #include <unistd.h>
+    #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