From ec90b249ecbd415c931630070b0831c6cf86d2d4 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 16 Oct 2010 19:53:17 +1100 Subject: replace: cope with systems that have fdatasync(), but don't have the prototype this is needed for MacOSX 10.4.1 --- lib/replace/libreplace.m4 | 1 + lib/replace/replace.h | 2 ++ lib/replace/wscript | 5 ++++- 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'lib/replace') diff --git a/lib/replace/libreplace.m4 b/lib/replace/libreplace.m4 index 0d716e0abe..3dd64ef8b8 100644 --- a/lib/replace/libreplace.m4 +++ b/lib/replace/libreplace.m4 @@ -115,6 +115,7 @@ AC_CHECK_FUNCS(fdatasync,,[ [libreplace_cv_HAVE_FDATASYNC_IN_LIBRT=yes AC_DEFINE(HAVE_FDATASYNC, 1, Define to 1 if there is support for fdatasync)]) ]) +AC_HAVE_DECL(fdatasync, [#include ]) AC_CHECK_FUNCS(clock_gettime,libreplace_cv_have_clock_gettime=yes,[ AC_CHECK_LIB(rt, clock_gettime, [libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT=yes diff --git a/lib/replace/replace.h b/lib/replace/replace.h index 8fde16c52d..10c7ee701c 100644 --- a/lib/replace/replace.h +++ b/lib/replace/replace.h @@ -756,6 +756,8 @@ char *ufc_crypt(const char *key, const char *salt); #ifndef HAVE_FDATASYNC #define fdatasync(fd) fsync(fd) +#elif !defined(HAVE_DECL_FDATASYNC) +int fdatasync(int ); #endif /* these are used to mark symbols as local to a shared lib, or diff --git a/lib/replace/wscript b/lib/replace/wscript index fef366317c..a3cde2bcc8 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -173,7 +173,10 @@ def configure(conf): conf.CHECK_C_PROTOTYPE('dlopen', 'void *dlopen(const char* filename, unsigned int flags)', define='DLOPEN_TAKES_UNSIGNED_FLAGS', headers='dlfcn.h dl.h') - conf.CHECK_FUNCS_IN('fdatasync', 'rt', checklibc=True) + if conf.CHECK_FUNCS_IN('fdatasync', 'rt', checklibc=True): + # some systems are missing the declaration + conf.CHECK_DECLS('fdatasync') + conf.CHECK_FUNCS_IN('clock_gettime', 'rt', checklibc=True) # these headers need to be tested as a group on freebsd -- cgit