dovecot-1.1: Test if posix_fallocate() works already in configure.
dovecot at dovecot.org
dovecot at dovecot.org
Sun Oct 5 13:49:35 EEST 2008
details: http://hg.dovecot.org/dovecot-1.1/rev/12565ef10d1c
changeset: 7903:12565ef10d1c
user: Timo Sirainen <tss at iki.fi>
date: Sun Oct 05 13:48:15 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 0fa3d8c5247d -r 12565ef10d1c configure.in
--- a/configure.in Sun Oct 05 13:47:15 2008 +0300
+++ b/configure.in Sun Oct 05 13:48:15 2008 +0300
@@ -650,17 +650,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