diff options
| author | Florian Hahn <flo@fhahn.com> | 2014-12-25 21:34:42 +0100 |
|---|---|---|
| committer | Florian Hahn <flo@fhahn.com> | 2014-12-25 22:22:44 +0100 |
| commit | eb4b20288e6e8e704f5248c56601149dbf856599 (patch) | |
| tree | 9c73141be14bc34a51d9cb4c17c5189fbf14690b /src/libstd | |
| parent | f673e9841f58a2196efd3b757804efa2575f8b79 (diff) | |
| download | rust-eb4b20288e6e8e704f5248c56601149dbf856599.tar.gz rust-eb4b20288e6e8e704f5248c56601149dbf856599.zip | |
Map EEXIST to PathAlreadyExists error, closes #20226
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/io/fs.rs | 13 | ||||
| -rw-r--r-- | src/libstd/sys/unix/mod.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sys/windows/mod.rs | 2 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index 4e736908c37..10578fbb3ff 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -1149,6 +1149,19 @@ mod test { } #[test] + fn mkdir_path_already_exists_error() { + use io::{IoError, PathAlreadyExists}; + + let tmpdir = tmpdir(); + let dir = &tmpdir.join("mkdir_error_twice"); + check!(mkdir(dir, io::USER_RWX)); + match mkdir(dir, io::USER_RWX) { + Err(IoError{kind:PathAlreadyExists,..}) => (), + _ => assert!(false) + }; + } + + #[test] fn recursive_mkdir() { let tmpdir = tmpdir(); let dir = tmpdir.join("d1/d2"); diff --git a/src/libstd/sys/unix/mod.rs b/src/libstd/sys/unix/mod.rs index f3babca3287..4b7ac8ff4d3 100644 --- a/src/libstd/sys/unix/mod.rs +++ b/src/libstd/sys/unix/mod.rs @@ -109,6 +109,8 @@ pub fn decode_error(errno: i32) -> IoError { "file descriptor is not a TTY"), libc::ETIMEDOUT => (io::TimedOut, "operation timed out"), libc::ECANCELED => (io::TimedOut, "operation aborted"), + libc::consts::os::posix88::EEXIST => + (io::PathAlreadyExists, "path already exists"), // These two constants can have the same value on some systems, // but different values on others, so we can't use a match diff --git a/src/libstd/sys/windows/mod.rs b/src/libstd/sys/windows/mod.rs index 6924687d8c4..aee98e22836 100644 --- a/src/libstd/sys/windows/mod.rs +++ b/src/libstd/sys/windows/mod.rs @@ -121,6 +121,8 @@ pub fn decode_error(errno: i32) -> IoError { "invalid handle provided to function"), libc::ERROR_NOTHING_TO_TERMINATE => (io::InvalidInput, "no process to kill"), + libc::ERROR_ALREADY_EXISTS => + (io::PathAlreadyExists, "path already exists"), // libuv maps this error code to EISDIR. we do too. if it is found // to be incorrect, we can add in some more machinery to only |
