diff options
| author | Marco A L Barbosa <malbarbo@gmail.com> | 2019-08-22 14:40:21 -0300 |
|---|---|---|
| committer | Marco A L Barbosa <malbarbo@gmail.com> | 2019-08-23 10:48:38 -0300 |
| commit | c8838efe355df9a9834e96a0d853743d21f06ce2 (patch) | |
| tree | ab28e974502cc02b7453e098c96d6508fa011b2c | |
| parent | 201e52e5fe73ccf3dd22946b1216ad8d64f8c2ba (diff) | |
| download | rust-c8838efe355df9a9834e96a0d853743d21f06ce2.tar.gz rust-c8838efe355df9a9834e96a0d853743d21f06ce2.zip | |
Implement decode_error_kind for wasi
Based on the implementation for unix targets
| -rw-r--r-- | src/libstd/sys/wasi/mod.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/libstd/sys/wasi/mod.rs b/src/libstd/sys/wasi/mod.rs index f842869e08e..57da81b41e7 100644 --- a/src/libstd/sys/wasi/mod.rs +++ b/src/libstd/sys/wasi/mod.rs @@ -64,8 +64,24 @@ pub fn unsupported_err() -> Error { Error::new(ErrorKind::Other, "operation not supported on wasm yet") } -pub fn decode_error_kind(_code: i32) -> ErrorKind { - ErrorKind::Other +pub fn decode_error_kind(errno: i32) -> ErrorKind { + match errno as libc::c_int { + libc::ECONNREFUSED => ErrorKind::ConnectionRefused, + libc::ECONNRESET => ErrorKind::ConnectionReset, + libc::EPERM | libc::EACCES => ErrorKind::PermissionDenied, + libc::EPIPE => ErrorKind::BrokenPipe, + libc::ENOTCONN => ErrorKind::NotConnected, + libc::ECONNABORTED => ErrorKind::ConnectionAborted, + libc::EADDRNOTAVAIL => ErrorKind::AddrNotAvailable, + libc::EADDRINUSE => ErrorKind::AddrInUse, + libc::ENOENT => ErrorKind::NotFound, + libc::EINTR => ErrorKind::Interrupted, + libc::EINVAL => ErrorKind::InvalidInput, + libc::ETIMEDOUT => ErrorKind::TimedOut, + libc::EEXIST => ErrorKind::AlreadyExists, + libc::EAGAIN => ErrorKind::WouldBlock, + _ => ErrorKind::Other, + } } // This enum is used as the storage for a bunch of types which can't actually |
