From 3f9f49aacd32fd9c0549cfc976e786b25ff3e6dd Mon Sep 17 00:00:00 2001
From: Jed Brown <jed@jedbrown.org>
Date: Thu, 6 Aug 2020 22:57:08 -0600
Subject: [PATCH] add fmemopen, open_memstream, and open_wmemstream for
 POSIX.1-2008

Skip test on aarch64 due to https://github.com/rust-lang/libc/issues/1765
---
 libc-test/build.rs |  3 ++-
 src/unix/mod.rs    | 13 +++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 libc-test/build.rs

diff --git a/libc-test/build.rs b/libc-test/build.rs
old mode 100644
new mode 100755
index ff5efb82..8c538fb5
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -1592,7 +1592,8 @@ fn test_android(target: &str) {
             // https://github.com/rust-lang/libc/issues/1765
             "lockf" | "preadv64" | "pwritev64" | "openpty" | "forkpty"
             | "login_tty" | "getifaddrs" | "freeifaddrs" | "sethostname"
-            | "getgrgid_r" | "getgrnam_r" | "sigtimedwait"
+            | "getgrgid_r" | "getgrnam_r" | "sigtimedwait" | "fmemopen"
+            | "open_memstream" | "open_wmemstream"
                 if aarch64 =>
             {
                 true
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 7804f3e7..e8d91086 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -419,6 +419,19 @@ extern "C" {
         mode: *const c_char,
         file: *mut FILE,
     ) -> *mut FILE;
+    pub fn fmemopen(
+        buf: *mut c_void,
+        size: size_t,
+        mode: *const c_char,
+    ) -> *mut FILE;
+    pub fn open_memstream(
+        ptr: *mut *mut c_char,
+        sizeloc: *mut size_t,
+    ) -> *mut FILE;
+    pub fn open_wmemstream(
+        ptr: *mut *mut wchar_t,
+        sizeloc: *mut size_t,
+    ) -> *mut FILE;
     pub fn fflush(file: *mut FILE) -> c_int;
     pub fn fclose(file: *mut FILE) -> c_int;
     pub fn remove(filename: *const c_char) -> c_int;
-- 
GitLab