Add POSIX strerror_r

This commit is contained in:
Mateusz Mikuła
2019-04-19 17:58:39 +02:00
committed by Mateusz Mikuła
parent b9e03cbaed
commit c68a0d5678
3 changed files with 32 additions and 1 deletions
+19
View File
@@ -263,6 +263,25 @@ pub unsafe extern "C" fn strerror(errnum: c_int) -> *mut c_char {
strerror_buf.as_mut_ptr() as *mut c_char
}
#[no_mangle]
pub unsafe extern "C" fn strerror_r(
errnum: c_int,
buf: *mut c_char,
buflen: size_t,
) -> c_int {
let msg = strerror(errnum);
let len = strlen(msg);
if len >= buflen {
memcpy(buf as *mut c_void, msg as *const c_void, buflen - 1);
*buf.add(buflen - 1) = 0;
return ERANGE as c_int;
}
memcpy(buf as *mut c_void, msg as *const c_void, len + 1);
0
}
#[no_mangle]
pub unsafe extern "C" fn strlen(s: *const c_char) -> size_t {
strnlen(s, usize::MAX)