wasi: Implement `error_string` to get readable errors

This routes the `error_string` API to `strerror` in libc which should
have more human readable descriptions.
This commit is contained in:
Alex Crichton 2019-04-01 05:29:17 -07:00
parent 60f6cbd002
commit 32a76844c4
1 changed files with 15 additions and 2 deletions

View File

@ -27,8 +27,21 @@ pub fn errno() -> i32 {
unsafe { errno as i32 }
}
pub fn error_string(_errno: i32) -> String {
"operation failed".to_string()
pub fn error_string(errno: i32) -> String {
extern {
fn strerror_r(errnum: libc::c_int, buf: *mut libc::c_char,
buflen: libc::size_t) -> libc::c_int;
}
let mut buf = [0 as libc::c_char; 1024];
let p = buf.as_mut_ptr();
unsafe {
if strerror_r(errno as libc::c_int, p, buf.len()) < 0 {
panic!("strerror_r failure");
}
str::from_utf8(CStr::from_ptr(p).to_bytes()).unwrap().to_owned()
}
}
pub fn getcwd() -> io::Result<PathBuf> {