Redefine ErrorKind::Other and stop using it in std.
This commit is contained in:
@@ -149,7 +149,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind {
|
||||
x if x == 1 as i32 => ErrorKind::PermissionDenied,
|
||||
x if x == 32 as i32 => ErrorKind::BrokenPipe,
|
||||
x if x == 110 as i32 => ErrorKind::TimedOut,
|
||||
_ => ErrorKind::Other,
|
||||
_ => ErrorKind::Unknown,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ use crate::time::Duration;
|
||||
pub fn init() -> io::Result<()> {
|
||||
if abi::network_init() < 0 {
|
||||
return Err(io::Error::new_const(
|
||||
ErrorKind::Other,
|
||||
ErrorKind::Unknown,
|
||||
&"Unable to initialize network interface",
|
||||
));
|
||||
}
|
||||
@@ -51,7 +51,7 @@ impl TcpStream {
|
||||
match abi::tcpstream::connect(addr.ip().to_string().as_bytes(), addr.port(), None) {
|
||||
Ok(handle) => Ok(TcpStream(Arc::new(Socket(handle)))),
|
||||
_ => Err(io::Error::new_const(
|
||||
ErrorKind::Other,
|
||||
ErrorKind::Unknown,
|
||||
&"Unable to initiate a connection on a socket",
|
||||
)),
|
||||
}
|
||||
@@ -65,7 +65,7 @@ impl TcpStream {
|
||||
) {
|
||||
Ok(handle) => Ok(TcpStream(Arc::new(Socket(handle)))),
|
||||
_ => Err(io::Error::new_const(
|
||||
ErrorKind::Other,
|
||||
ErrorKind::Unknown,
|
||||
&"Unable to initiate a connection on a socket",
|
||||
)),
|
||||
}
|
||||
@@ -73,7 +73,7 @@ impl TcpStream {
|
||||
|
||||
pub fn set_read_timeout(&self, duration: Option<Duration>) -> io::Result<()> {
|
||||
abi::tcpstream::set_read_timeout(*self.0.as_inner(), duration.map(|d| d.as_millis() as u64))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"Unable to set timeout value"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"Unable to set timeout value"))
|
||||
}
|
||||
|
||||
pub fn set_write_timeout(&self, duration: Option<Duration>) -> io::Result<()> {
|
||||
@@ -81,12 +81,12 @@ impl TcpStream {
|
||||
*self.0.as_inner(),
|
||||
duration.map(|d| d.as_millis() as u64),
|
||||
)
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"Unable to set timeout value"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"Unable to set timeout value"))
|
||||
}
|
||||
|
||||
pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
|
||||
let duration = abi::tcpstream::get_read_timeout(*self.0.as_inner()).map_err(|_| {
|
||||
io::Error::new_const(ErrorKind::Other, &"Unable to determine timeout value")
|
||||
io::Error::new_const(ErrorKind::Unknown, &"Unable to determine timeout value")
|
||||
})?;
|
||||
|
||||
Ok(duration.map(|d| Duration::from_millis(d)))
|
||||
@@ -94,7 +94,7 @@ impl TcpStream {
|
||||
|
||||
pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
|
||||
let duration = abi::tcpstream::get_write_timeout(*self.0.as_inner()).map_err(|_| {
|
||||
io::Error::new_const(ErrorKind::Other, &"Unable to determine timeout value")
|
||||
io::Error::new_const(ErrorKind::Unknown, &"Unable to determine timeout value")
|
||||
})?;
|
||||
|
||||
Ok(duration.map(|d| Duration::from_millis(d)))
|
||||
@@ -102,7 +102,7 @@ impl TcpStream {
|
||||
|
||||
pub fn peek(&self, buf: &mut [u8]) -> io::Result<usize> {
|
||||
abi::tcpstream::peek(*self.0.as_inner(), buf)
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"set_nodelay failed"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"set_nodelay failed"))
|
||||
}
|
||||
|
||||
pub fn read(&self, buffer: &mut [u8]) -> io::Result<usize> {
|
||||
@@ -113,8 +113,9 @@ impl TcpStream {
|
||||
let mut size: usize = 0;
|
||||
|
||||
for i in ioslice.iter_mut() {
|
||||
let ret = abi::tcpstream::read(*self.0.as_inner(), &mut i[0..])
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"Unable to read on socket"))?;
|
||||
let ret = abi::tcpstream::read(*self.0.as_inner(), &mut i[0..]).map_err(|_| {
|
||||
io::Error::new_const(ErrorKind::Unknown, &"Unable to read on socket")
|
||||
})?;
|
||||
|
||||
if ret != 0 {
|
||||
size += ret;
|
||||
@@ -138,7 +139,7 @@ impl TcpStream {
|
||||
|
||||
for i in ioslice.iter() {
|
||||
size += abi::tcpstream::write(*self.0.as_inner(), i).map_err(|_| {
|
||||
io::Error::new_const(ErrorKind::Other, &"Unable to write on socket")
|
||||
io::Error::new_const(ErrorKind::Unknown, &"Unable to write on socket")
|
||||
})?;
|
||||
}
|
||||
|
||||
@@ -152,13 +153,13 @@ impl TcpStream {
|
||||
|
||||
pub fn peer_addr(&self) -> io::Result<SocketAddr> {
|
||||
let (ipaddr, port) = abi::tcpstream::peer_addr(*self.0.as_inner())
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"peer_addr failed"))?;
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"peer_addr failed"))?;
|
||||
|
||||
let saddr = match ipaddr {
|
||||
Ipv4(ref addr) => SocketAddr::new(IpAddr::V4(Ipv4Addr::from(addr.0)), port),
|
||||
Ipv6(ref addr) => SocketAddr::new(IpAddr::V6(Ipv6Addr::from(addr.0)), port),
|
||||
_ => {
|
||||
return Err(io::Error::new_const(ErrorKind::Other, &"peer_addr failed"));
|
||||
return Err(io::Error::new_const(ErrorKind::Unknown, &"peer_addr failed"));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -171,7 +172,7 @@ impl TcpStream {
|
||||
|
||||
pub fn shutdown(&self, how: Shutdown) -> io::Result<()> {
|
||||
abi::tcpstream::shutdown(*self.0.as_inner(), how as i32)
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"unable to shutdown socket"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"unable to shutdown socket"))
|
||||
}
|
||||
|
||||
pub fn duplicate(&self) -> io::Result<TcpStream> {
|
||||
@@ -180,22 +181,22 @@ impl TcpStream {
|
||||
|
||||
pub fn set_nodelay(&self, mode: bool) -> io::Result<()> {
|
||||
abi::tcpstream::set_nodelay(*self.0.as_inner(), mode)
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"set_nodelay failed"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"set_nodelay failed"))
|
||||
}
|
||||
|
||||
pub fn nodelay(&self) -> io::Result<bool> {
|
||||
abi::tcpstream::nodelay(*self.0.as_inner())
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"nodelay failed"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"nodelay failed"))
|
||||
}
|
||||
|
||||
pub fn set_ttl(&self, tll: u32) -> io::Result<()> {
|
||||
abi::tcpstream::set_tll(*self.0.as_inner(), tll)
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"unable to set TTL"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"unable to set TTL"))
|
||||
}
|
||||
|
||||
pub fn ttl(&self) -> io::Result<u32> {
|
||||
abi::tcpstream::get_tll(*self.0.as_inner())
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"unable to get TTL"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"unable to get TTL"))
|
||||
}
|
||||
|
||||
pub fn take_error(&self) -> io::Result<Option<io::Error>> {
|
||||
@@ -204,7 +205,7 @@ impl TcpStream {
|
||||
|
||||
pub fn set_nonblocking(&self, mode: bool) -> io::Result<()> {
|
||||
abi::tcpstream::set_nonblocking(*self.0.as_inner(), mode)
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"unable to set blocking mode"))
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"unable to set blocking mode"))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,12 +231,12 @@ impl TcpListener {
|
||||
|
||||
pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> {
|
||||
let (handle, ipaddr, port) = abi::tcplistener::accept(self.0.port())
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Other, &"accept failed"))?;
|
||||
.map_err(|_| io::Error::new_const(ErrorKind::Unknown, &"accept failed"))?;
|
||||
let saddr = match ipaddr {
|
||||
Ipv4(ref addr) => SocketAddr::new(IpAddr::V4(Ipv4Addr::from(addr.0)), port),
|
||||
Ipv6(ref addr) => SocketAddr::new(IpAddr::V6(Ipv6Addr::from(addr.0)), port),
|
||||
_ => {
|
||||
return Err(io::Error::new_const(ErrorKind::Other, &"accept failed"));
|
||||
return Err(io::Error::new_const(ErrorKind::Unknown, &"accept failed"));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ impl io::Write for Stdout {
|
||||
unsafe { len = abi::write(1, data.as_ptr() as *const u8, data.len()) }
|
||||
|
||||
if len < 0 {
|
||||
Err(io::Error::new_const(io::ErrorKind::Other, &"Stdout is not able to print"))
|
||||
Err(io::Error::new_const(io::ErrorKind::Unknown, &"Stdout is not able to print"))
|
||||
} else {
|
||||
Ok(len as usize)
|
||||
}
|
||||
@@ -52,7 +52,7 @@ impl io::Write for Stdout {
|
||||
unsafe { len = abi::write(1, data.as_ptr() as *const u8, data.len()) }
|
||||
|
||||
if len < 0 {
|
||||
Err(io::Error::new_const(io::ErrorKind::Other, &"Stdout is not able to print"))
|
||||
Err(io::Error::new_const(io::ErrorKind::Unknown, &"Stdout is not able to print"))
|
||||
} else {
|
||||
Ok(len as usize)
|
||||
}
|
||||
@@ -81,7 +81,7 @@ impl io::Write for Stderr {
|
||||
unsafe { len = abi::write(2, data.as_ptr() as *const u8, data.len()) }
|
||||
|
||||
if len < 0 {
|
||||
Err(io::Error::new_const(io::ErrorKind::Other, &"Stderr is not able to print"))
|
||||
Err(io::Error::new_const(io::ErrorKind::Unknown, &"Stderr is not able to print"))
|
||||
} else {
|
||||
Ok(len as usize)
|
||||
}
|
||||
@@ -93,7 +93,7 @@ impl io::Write for Stderr {
|
||||
unsafe { len = abi::write(2, data.as_ptr() as *const u8, data.len()) }
|
||||
|
||||
if len < 0 {
|
||||
Err(io::Error::new_const(io::ErrorKind::Other, &"Stderr is not able to print"))
|
||||
Err(io::Error::new_const(io::ErrorKind::Unknown, &"Stderr is not able to print"))
|
||||
} else {
|
||||
Ok(len as usize)
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ impl Thread {
|
||||
// The thread failed to start and as a result p was not consumed. Therefore, it is
|
||||
// safe to reconstruct the box so that it gets deallocated.
|
||||
drop(Box::from_raw(p));
|
||||
Err(io::Error::new_const(io::ErrorKind::Other, &"Unable to create thread!"))
|
||||
Err(io::Error::new_const(io::ErrorKind::Unknown, &"Unable to create thread!"))
|
||||
} else {
|
||||
Ok(Thread { tid: tid })
|
||||
};
|
||||
|
||||
@@ -70,7 +70,7 @@ pub fn sgx_ineffective<T>(v: T) -> crate::io::Result<T> {
|
||||
static SGX_INEFFECTIVE_ERROR: AtomicBool = AtomicBool::new(false);
|
||||
if SGX_INEFFECTIVE_ERROR.load(Ordering::Relaxed) {
|
||||
Err(crate::io::Error::new_const(
|
||||
ErrorKind::Other,
|
||||
ErrorKind::Unknown,
|
||||
&"operation can't be trusted to have any effect on SGX",
|
||||
))
|
||||
} else {
|
||||
@@ -115,11 +115,11 @@ pub fn decode_error_kind(code: i32) -> ErrorKind {
|
||||
} else if code == Error::Interrupted as _ {
|
||||
ErrorKind::Interrupted
|
||||
} else if code == Error::Other as _ {
|
||||
ErrorKind::Other
|
||||
ErrorKind::Unknown
|
||||
} else if code == Error::UnexpectedEof as _ {
|
||||
ErrorKind::UnexpectedEof
|
||||
} else {
|
||||
ErrorKind::Other
|
||||
ErrorKind::Unknown
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -466,7 +466,7 @@ pub struct LookupHost(!);
|
||||
|
||||
impl LookupHost {
|
||||
fn new(host: String) -> io::Result<LookupHost> {
|
||||
Err(io::Error::new(io::ErrorKind::Other, NonIpSockAddr { host }))
|
||||
Err(io::Error::new(io::ErrorKind::Unknown, NonIpSockAddr { host }))
|
||||
}
|
||||
|
||||
pub fn port(&self) -> u16 {
|
||||
|
||||
@@ -65,7 +65,7 @@ impl io::Write for Stderr {
|
||||
pub const STDIN_BUF_SIZE: usize = crate::sys_common::io::DEFAULT_BUF_SIZE;
|
||||
|
||||
pub fn is_ebadf(err: &io::Error) -> bool {
|
||||
// FIXME: Rust normally maps Unix EBADF to `Other`
|
||||
// FIXME: Rust normally maps Unix EBADF to `Unknown`
|
||||
err.raw_os_error() == Some(abi::Error::BrokenPipe as _)
|
||||
}
|
||||
|
||||
|
||||
@@ -358,7 +358,7 @@ impl FileAttr {
|
||||
}))
|
||||
} else {
|
||||
Err(io::Error::new_const(
|
||||
io::ErrorKind::Other,
|
||||
io::ErrorKind::Unknown,
|
||||
&"creation time is not available for the filesystem",
|
||||
))
|
||||
};
|
||||
|
||||
@@ -155,7 +155,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind {
|
||||
// clause
|
||||
x if x == libc::EAGAIN || x == libc::EWOULDBLOCK => ErrorKind::WouldBlock,
|
||||
|
||||
_ => ErrorKind::Other,
|
||||
_ => ErrorKind::Unknown,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ pub fn cvt_gai(err: c_int) -> io::Result<()> {
|
||||
str::from_utf8(CStr::from_ptr(libc::gai_strerror(err)).to_bytes()).unwrap().to_owned()
|
||||
};
|
||||
Err(io::Error::new(
|
||||
io::ErrorKind::Other,
|
||||
io::ErrorKind::Unknown,
|
||||
&format!("failed to lookup address information: {}", detail)[..],
|
||||
))
|
||||
}
|
||||
@@ -178,7 +178,7 @@ impl Socket {
|
||||
if pollfd.revents & libc::POLLHUP != 0 {
|
||||
let e = self.take_error()?.unwrap_or_else(|| {
|
||||
io::Error::new_const(
|
||||
io::ErrorKind::Other,
|
||||
io::ErrorKind::Unknown,
|
||||
&"no error set after POLLHUP",
|
||||
)
|
||||
});
|
||||
|
||||
@@ -280,7 +280,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
|
||||
))?;
|
||||
if path_len <= 1 {
|
||||
return Err(io::Error::new_const(
|
||||
io::ErrorKind::Other,
|
||||
io::ErrorKind::Unknown,
|
||||
&"KERN_PROC_PATHNAME sysctl returned zero-length string",
|
||||
));
|
||||
}
|
||||
@@ -303,7 +303,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
|
||||
return crate::fs::read_link(curproc_exe);
|
||||
}
|
||||
Err(io::Error::new_const(
|
||||
io::ErrorKind::Other,
|
||||
io::ErrorKind::Unknown,
|
||||
&"/proc/curproc/exe doesn't point to regular file.",
|
||||
))
|
||||
}
|
||||
@@ -321,7 +321,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
|
||||
cvt(libc::sysctl(mib, 4, argv.as_mut_ptr() as *mut _, &mut argv_len, ptr::null_mut(), 0))?;
|
||||
argv.set_len(argv_len as usize);
|
||||
if argv[0].is_null() {
|
||||
return Err(io::Error::new_const(io::ErrorKind::Other, &"no current exe available"));
|
||||
return Err(io::Error::new_const(io::ErrorKind::Unknown, &"no current exe available"));
|
||||
}
|
||||
let argv0 = CStr::from_ptr(argv[0]).to_bytes();
|
||||
if argv0[0] == b'.' || argv0.iter().any(|b| *b == b'/') {
|
||||
@@ -336,7 +336,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
|
||||
pub fn current_exe() -> io::Result<PathBuf> {
|
||||
match crate::fs::read_link("/proc/self/exe") {
|
||||
Err(ref e) if e.kind() == io::ErrorKind::NotFound => Err(io::Error::new_const(
|
||||
io::ErrorKind::Other,
|
||||
io::ErrorKind::Unknown,
|
||||
&"no /proc/self/exe available. Is /proc mounted?",
|
||||
)),
|
||||
other => other,
|
||||
@@ -423,7 +423,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
|
||||
_get_next_image_info(0, &mut cookie, &mut info, mem::size_of::<image_info>() as i32);
|
||||
if result != 0 {
|
||||
use crate::io::ErrorKind;
|
||||
Err(io::Error::new_const(ErrorKind::Other, &"Error getting executable path"))
|
||||
Err(io::Error::new_const(ErrorKind::Unknown, &"Error getting executable path"))
|
||||
} else {
|
||||
let name = CStr::from_ptr(info.name.as_ptr()).to_bytes();
|
||||
Ok(PathBuf::from(OsStr::from_bytes(name)))
|
||||
|
||||
@@ -30,7 +30,7 @@ pub fn unsupported_err() -> std_io::Error {
|
||||
}
|
||||
|
||||
pub fn decode_error_kind(_code: i32) -> crate::io::ErrorKind {
|
||||
crate::io::ErrorKind::Other
|
||||
crate::io::ErrorKind::Unknown
|
||||
}
|
||||
|
||||
pub fn abort_internal() -> ! {
|
||||
|
||||
@@ -648,7 +648,7 @@ fn open_parent(p: &Path) -> io::Result<(ManuallyDrop<WasiFd>, PathBuf)> {
|
||||
through which {:?} could be opened",
|
||||
p
|
||||
);
|
||||
return Err(io::Error::new(io::ErrorKind::Other, msg));
|
||||
return Err(io::Error::new(io::ErrorKind::Unknown, msg));
|
||||
}
|
||||
let relative = CStr::from_ptr(relative_path).to_bytes().to_vec();
|
||||
|
||||
@@ -670,7 +670,7 @@ fn open_parent(p: &Path) -> io::Result<(ManuallyDrop<WasiFd>, PathBuf)> {
|
||||
}
|
||||
|
||||
pub fn osstr2str(f: &OsStr) -> io::Result<&str> {
|
||||
f.to_str().ok_or_else(|| io::Error::new_const(io::ErrorKind::Other, &"input must be utf-8"))
|
||||
f.to_str().ok_or_else(|| io::Error::new_const(io::ErrorKind::Unknown, &"input must be utf-8"))
|
||||
}
|
||||
|
||||
pub fn copy(from: &Path, to: &Path) -> io::Result<u64> {
|
||||
|
||||
@@ -58,7 +58,7 @@ pub use common::*;
|
||||
pub fn decode_error_kind(errno: i32) -> std_io::ErrorKind {
|
||||
use std_io::ErrorKind::*;
|
||||
if errno > u16::MAX as i32 || errno < 0 {
|
||||
return Other;
|
||||
return Unknown;
|
||||
}
|
||||
match errno as u16 {
|
||||
wasi::ERRNO_CONNREFUSED => ConnectionRefused,
|
||||
@@ -77,7 +77,7 @@ pub fn decode_error_kind(errno: i32) -> std_io::ErrorKind {
|
||||
wasi::ERRNO_AGAIN => WouldBlock,
|
||||
wasi::ERRNO_NOSYS => Unsupported,
|
||||
wasi::ERRNO_NOMEM => OutOfMemory,
|
||||
_ => Other,
|
||||
_ => Unknown,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -514,7 +514,7 @@ impl File {
|
||||
}
|
||||
_ => {
|
||||
return Err(io::Error::new_const(
|
||||
io::ErrorKind::Other,
|
||||
io::ErrorKind::Unknown,
|
||||
&"Unsupported reparse point type",
|
||||
));
|
||||
}
|
||||
@@ -961,9 +961,8 @@ pub fn try_exists(path: &Path) -> io::Result<bool> {
|
||||
// `ERROR_SHARING_VIOLATION` means that the file has been locked by
|
||||
// another process. This is often temporary so we simply report it
|
||||
// as the file existing.
|
||||
io::ErrorKind::Other if e.raw_os_error() == Some(c::ERROR_SHARING_VIOLATION as i32) => {
|
||||
Ok(true)
|
||||
}
|
||||
_ if e.raw_os_error() == Some(c::ERROR_SHARING_VIOLATION as i32) => Ok(true),
|
||||
|
||||
// Other errors such as `ERROR_ACCESS_DENIED` may indicate that the
|
||||
// file exists. However, these types of errors are usually more
|
||||
// permanent so we report them here.
|
||||
|
||||
@@ -103,7 +103,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind {
|
||||
c::WSAEWOULDBLOCK => ErrorKind::WouldBlock,
|
||||
c::WSAETIMEDOUT => ErrorKind::TimedOut,
|
||||
|
||||
_ => ErrorKind::Other,
|
||||
_ => ErrorKind::Unknown,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user