From dd11d3c6191a43e5ab86f57f3e6b087115d8f420 Mon Sep 17 00:00:00 2001 From: Peter Atashian Date: Mon, 19 Oct 2015 00:54:51 -0400 Subject: [PATCH] Add error kind handling for ERROR_PATH_NOT_FOUND Fixes #29150 Signed-off-by: Peter Atashian --- src/libstd/fs.rs | 6 ++++++ src/libstd/sys/windows/c.rs | 2 ++ src/libstd/sys/windows/mod.rs | 1 + 3 files changed, 9 insertions(+) diff --git a/src/libstd/fs.rs b/src/libstd/fs.rs index 0669f545a83..1da7a1502d9 100644 --- a/src/libstd/fs.rs +++ b/src/libstd/fs.rs @@ -2162,4 +2162,10 @@ mod tests { } } } + + #[test] + fn read_dir_not_found() { + let res = fs::read_dir("/path/that/does/not/exist"); + assert_eq!(res.err().unwrap().kind(), ErrorKind::NotFound); + } } diff --git a/src/libstd/sys/windows/c.rs b/src/libstd/sys/windows/c.rs index bac5b47eb1a..a9eb4db2f53 100644 --- a/src/libstd/sys/windows/c.rs +++ b/src/libstd/sys/windows/c.rs @@ -83,6 +83,8 @@ pub const EXCEPTION_CONTINUE_SEARCH: LONG = 0; pub const EXCEPTION_MAXIMUM_PARAMETERS: usize = 15; pub const EXCEPTION_STACK_OVERFLOW: DWORD = 0xc00000fd; +pub const ERROR_PATH_NOT_FOUND: libc::c_int = 3; + #[repr(C)] #[cfg(target_arch = "x86")] pub struct WSADATA { diff --git a/src/libstd/sys/windows/mod.rs b/src/libstd/sys/windows/mod.rs index 85f5d4e5884..4df3c561ab1 100644 --- a/src/libstd/sys/windows/mod.rs +++ b/src/libstd/sys/windows/mod.rs @@ -51,6 +51,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind { libc::ERROR_ALREADY_EXISTS => ErrorKind::AlreadyExists, libc::ERROR_BROKEN_PIPE => ErrorKind::BrokenPipe, libc::ERROR_FILE_NOT_FOUND => ErrorKind::NotFound, + c::ERROR_PATH_NOT_FOUND => ErrorKind::NotFound, libc::ERROR_NO_DATA => ErrorKind::BrokenPipe, libc::ERROR_OPERATION_ABORTED => ErrorKind::TimedOut,