summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-03-17 01:46:31 +0900
committerGitHub <noreply@github.com>2020-03-17 01:46:31 +0900
commit598939dd5ecb9364b89c5eb14be08f7ffd6ea847 (patch)
treec0f9e8c5f1d43dbc79a08cff38485e902d1a891d
parentd6159ebccec638ec14df5751663d0b71e87b3418 (diff)
parent6ffc752f7c938a23df165900c198568fac0c8d61 (diff)
downloadrust-libc-598939dd5ecb9364b89c5eb14be08f7ffd6ea847.tar.gz
Merge pull request #1653 from ArniDagur/shadow_reenterant
Add reenterant shadow.h functions
-rw-r--r--src/unix/linux_like/linux/gnu/mod.rs20
-rw-r--r--src/unix/linux_like/linux/mod.rs12
2 files changed, 31 insertions, 1 deletions
diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs
index 21f303ed53..02645fdd14 100644
--- a/src/unix/linux_like/linux/gnu/mod.rs
+++ b/src/unix/linux_like/linux/gnu/mod.rs
@@ -1087,6 +1087,26 @@ cfg_if! {
pub const PTHREAD_MUTEX_ADAPTIVE_NP: ::c_int = 3;
extern "C" {
+ pub fn fgetspent_r(
+ fp: *mut ::FILE,
+ spbuf: *mut ::spwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ spbufp: *mut *mut ::spwd,
+ ) -> ::c_int;
+ pub fn sgetspent_r(
+ s: *const ::c_char,
+ spbuf: *mut ::spwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ spbufp: *mut *mut ::spwd,
+ ) -> ::c_int;
+ pub fn getspent_r(
+ spbuf: *mut ::spwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ spbufp: *mut *mut ::spwd,
+ ) -> ::c_int;
pub fn qsort_r(
base: *mut ::c_void,
num: ::size_t,
diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs
index 0d7b511539..eb068d337e 100644
--- a/src/unix/linux_like/linux/mod.rs
+++ b/src/unix/linux_like/linux/mod.rs
@@ -2587,7 +2587,17 @@ extern "C" {
pub fn endspent();
pub fn getspent() -> *mut spwd;
- pub fn getspnam(__name: *const ::c_char) -> *mut spwd;
+ pub fn getspnam(name: *const ::c_char) -> *mut spwd;
+ // Only `getspnam_r` is implemented for musl, out of all of the reenterant
+ // functions from `shadow.h`.
+ // https://git.musl-libc.org/cgit/musl/tree/include/shadow.h
+ pub fn getspnam_r(
+ name: *const ::c_char,
+ spbuf: *mut spwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ spbufp: *mut *mut spwd,
+ ) -> ::c_int;
pub fn shm_open(
name: *const c_char,