configure: Fix check for fdatasync()

Under Darwin, a symbol exists for the fdatasync() function, so that our
link test succeeds. However _POSIX_SYNCHRONIZED_IO is set to '-1'.

According to POSIX:2008, a value of -1 means the feature is not supported.
A value of 0 means supported at compilation time, and a value greater 0
means supported at both compilation and run time.

Enable fdatasync() only if _POSIX_SYNCHRONIZED_IO is '>0'.

Signed-off-by: Alexandre Raymond <cerbere@gmail.com>
Signed-off-by: Andreas Färber <andreas.faerber@web.de>
This commit is contained in:
Alexandre Raymond 2011-05-29 18:22:48 -04:00 committed by Andreas Färber
parent dfa5294fce
commit d1722a27f5

8
configure vendored
View File

@ -2461,7 +2461,13 @@ fi
fdatasync=no
cat > $TMPC << EOF
#include <unistd.h>
int main(void) { return fdatasync(0); }
int main(void) {
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
return fdatasync(0);
#else
#abort Not supported
#endif
}
EOF
if compile_prog "" "" ; then
fdatasync=yes