Browse Source

Portability fixes for FreeBSD - os_fdatasync()

Use fsync() when fdatasync() and F_FULLSYNC isn't available.

Signed-off-by: Rui Paulo <rpaulo@freebsd.org>
Rui Paulo 9 years ago
parent
commit
22e8df3a98
1 changed files with 4 additions and 4 deletions
  1. 4 4
      src/utils/os_unix.c

+ 4 - 4
src/utils/os_unix.c

@@ -445,16 +445,16 @@ int os_file_exists(const char *fname)
 int os_fdatasync(FILE *stream)
 {
 	if (!fflush(stream)) {
-#ifndef __MACH__
+#ifdef __linux__
 		return fdatasync(fileno(stream));
-#else /* __MACH__ */
+#else /* !__linux__ */
 #ifdef F_FULLFSYNC
 		/* OS X does not implement fdatasync(). */
 		return fcntl(fileno(stream), F_FULLFSYNC);
 #else /* F_FULLFSYNC */
-#error Neither fdatasync nor F_FULLSYNC are defined
+		return fsync(fileno(stream));
 #endif /* F_FULLFSYNC */
-#endif /* __MACH__ */
+#endif /* __linux__ */
 	}
 
 	return -1;