about summary refs log tree commit diff
path: root/src/libstd/sys/windows
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-02-04 06:40:12 +0000
committerbors <bors@rust-lang.org>2015-02-04 06:40:12 +0000
commitd6c15d9b2daecdbe32eca894bda40c424798f5a0 (patch)
treea9e08bd10dc4cb6cb0d489e120001c3445e89b00 /src/libstd/sys/windows
parent3b2ed14906fd9f9daa27cc7d1dad263d2f5ff450 (diff)
parent70ecd8ed38d5bedbeb281d78c3da44477764236a (diff)
downloadrust-d6c15d9b2daecdbe32eca894bda40c424798f5a0.tar.gz
rust-d6c15d9b2daecdbe32eca894bda40c424798f5a0.zip
Auto merge of #21919 - alexcrichton:rollup, r=alexcrichton
Diffstat (limited to 'src/libstd/sys/windows')
-rw-r--r--src/libstd/sys/windows/backtrace.rs2
-rw-r--r--src/libstd/sys/windows/mod.rs29
-rw-r--r--src/libstd/sys/windows/os_str.rs2
-rw-r--r--src/libstd/sys/windows/process.rs2
4 files changed, 32 insertions, 3 deletions
diff --git a/src/libstd/sys/windows/backtrace.rs b/src/libstd/sys/windows/backtrace.rs
index 66712b9e3a1..92e309da34b 100644
--- a/src/libstd/sys/windows/backtrace.rs
+++ b/src/libstd/sys/windows/backtrace.rs
@@ -32,7 +32,7 @@ use libc;
 use mem;
 use ops::Drop;
 use option::Option::{Some};
-use path::Path;
+use old_path::Path;
 use ptr;
 use result::Result::{Ok, Err};
 use slice::SliceExt;
diff --git a/src/libstd/sys/windows/mod.rs b/src/libstd/sys/windows/mod.rs
index 8dd467eba9e..f1af70e2cf7 100644
--- a/src/libstd/sys/windows/mod.rs
+++ b/src/libstd/sys/windows/mod.rs
@@ -15,6 +15,7 @@
 use prelude::v1::*;
 
 use ffi::OsStr;
+use io::ErrorKind;
 use libc;
 use mem;
 use old_io::{self, IoResult, IoError};
@@ -143,6 +144,34 @@ pub fn decode_error_detailed(errno: i32) -> IoError {
     err
 }
 
+pub fn decode_error_kind(errno: i32) -> ErrorKind {
+    match errno as libc::c_int {
+        libc::ERROR_ACCESS_DENIED => ErrorKind::PermissionDenied,
+        libc::ERROR_ALREADY_EXISTS => ErrorKind::PathAlreadyExists,
+        libc::ERROR_BROKEN_PIPE => ErrorKind::BrokenPipe,
+        libc::ERROR_FILE_NOT_FOUND => ErrorKind::FileNotFound,
+        libc::ERROR_INVALID_FUNCTION => ErrorKind::InvalidInput,
+        libc::ERROR_INVALID_HANDLE => ErrorKind::MismatchedFileTypeForOperation,
+        libc::ERROR_INVALID_NAME => ErrorKind::InvalidInput,
+        libc::ERROR_NOTHING_TO_TERMINATE => ErrorKind::InvalidInput,
+        libc::ERROR_NO_DATA => ErrorKind::BrokenPipe,
+        libc::ERROR_OPERATION_ABORTED => ErrorKind::TimedOut,
+
+        libc::WSAEACCES => ErrorKind::PermissionDenied,
+        libc::WSAEADDRINUSE => ErrorKind::ConnectionRefused,
+        libc::WSAEADDRNOTAVAIL => ErrorKind::ConnectionRefused,
+        libc::WSAECONNABORTED => ErrorKind::ConnectionAborted,
+        libc::WSAECONNREFUSED => ErrorKind::ConnectionRefused,
+        libc::WSAECONNRESET => ErrorKind::ConnectionReset,
+        libc::WSAEINVAL => ErrorKind::InvalidInput,
+        libc::WSAENOTCONN => ErrorKind::NotConnected,
+        libc::WSAEWOULDBLOCK => ErrorKind::ResourceUnavailable,
+
+        _ => ErrorKind::Other,
+    }
+}
+
+
 #[inline]
 pub fn retry<I, F>(f: F) -> I where F: FnOnce() -> I { f() } // PR rust-lang/rust/#17020
 
diff --git a/src/libstd/sys/windows/os_str.rs b/src/libstd/sys/windows/os_str.rs
index aab2406cef9..af94b56bf1f 100644
--- a/src/libstd/sys/windows/os_str.rs
+++ b/src/libstd/sys/windows/os_str.rs
@@ -18,7 +18,7 @@ use result::Result;
 use option::Option;
 use mem;
 
-#[derive(Clone)]
+#[derive(Clone, Hash)]
 pub struct Buf {
     pub inner: Wtf8Buf
 }
diff --git a/src/libstd/sys/windows/process.rs b/src/libstd/sys/windows/process.rs
index 3ca735f7fdf..315c41e779a 100644
--- a/src/libstd/sys/windows/process.rs
+++ b/src/libstd/sys/windows/process.rs
@@ -23,7 +23,7 @@ use old_io::process::{ProcessExit, ExitStatus};
 use old_io::{IoResult, IoError};
 use old_io;
 use os;
-use path::BytesContainer;
+use old_path::BytesContainer;
 use ptr;
 use str;
 use sync::{StaticMutex, MUTEX_INIT};