dovecot-1.2: Test if posix_fallocate() works already in configure.

dovecot at dovecot.org dovecot at dovecot.org
Sun Oct 5 13:49:38 EEST 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/9886bf0a4c40
changeset: 8227:9886bf0a4c40
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Oct 05 13:48:32 2008 +0300
description:
Test if posix_fallocate() works already in configure.

diffstat:

1 file changed, 30 insertions(+), 10 deletions(-)
configure.in |   40 ++++++++++++++++++++++++++++++----------

diffs (51 lines):

diff -r 3e493fd3a9fa -r 9886bf0a4c40 configure.in
--- a/configure.in	Sun Oct 05 13:47:31 2008 +0300
+++ b/configure.in	Sun Oct 05 13:48:32 2008 +0300
@@ -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);
-], [
+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


More information about the dovecot-cvs mailing list