From a3d4884897c190eb5cab1f7647d788c6b46087be Mon Sep 17 00:00:00 2001
From: Kamal Marhubi <kamal@marhubi.com>
Date: Sun, 6 Mar 2016 10:10:42 -0500
Subject: [PATCH] unix: Include fdatasync(2) on non-Apple systems

The function is defined in POSIX [0], but according to Gnulib docs [1],
it is missing or not declared on at least some versions of OS X and
FreeBSD. On Solaris, it is not a system call but is present as
fdatasync(3) [2].

[0] http://www.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html
[1] https://www.gnu.org/software/gnulib/manual/html_node/fdatasync.html
[2] http://docs.oracle.com/cd/E36784_01/html/E36874/fdatasync-3c.html
---
 src/unix/bsd/openbsdlike/mod.rs | 1 +
 src/unix/solaris/mod.rs         | 1 +
 2 files changed, 2 insertions(+)

diff --git a/src/unix/bsd/openbsdlike/mod.rs b/src/unix/bsd/openbsdlike/mod.rs
index c0274a89..12c8cc15 100644
--- a/src/unix/bsd/openbsdlike/mod.rs
+++ b/src/unix/bsd/openbsdlike/mod.rs
@@ -388,6 +388,7 @@ extern {
     pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;
     pub fn mkostemps(template: *mut ::c_char, suffixlen: ::c_int, flags: ::c_int) -> ::c_int;
     pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;
+    pub fn fdatasync(fd: ::c_int) -> ::c_int;
 }
 
 cfg_if! {
diff --git a/src/unix/solaris/mod.rs b/src/unix/solaris/mod.rs
index 4587a89e..4ad520c8 100644
--- a/src/unix/solaris/mod.rs
+++ b/src/unix/solaris/mod.rs
@@ -765,5 +765,6 @@ extern {
                       buf: *mut ::c_char,
                       buflen: ::size_t) -> *const passwd;
     pub fn readdir(dirp: *mut ::DIR) -> *const ::dirent;
+    pub fn fdatasync(fd: ::c_int) -> ::c_int;
 }
 
-- 
GitLab