diff options
| author | bors <bors@rust-lang.org> | 2017-07-14 00:50:33 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-07-14 00:50:33 +0000 |
| commit | ab91c70cc69450bc69b76df0fd2faa82bda42d6b (patch) | |
| tree | d79dcef1bcd5099dfe9617ac181dcbbc0baba97b /src/libstd | |
| parent | b2c0707872082c890f332178f59fd02eea5b98f3 (diff) | |
| parent | da3f5b80ed8a0fb88aae2d2a462acc97b05ba911 (diff) | |
| download | rust-ab91c70cc69450bc69b76df0fd2faa82bda42d6b.tar.gz rust-ab91c70cc69450bc69b76df0fd2faa82bda42d6b.zip | |
Auto merge of #43216 - steveklabnik:rollup, r=steveklabnik
Rollup of 7 pull requests - Successful merges: #42926, #43125, #43157, #43167, #43187, #43203, #43204 - Failed merges:
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/path.rs | 34 | ||||
| -rw-r--r-- | src/libstd/sys/redox/fs.rs | 7 | ||||
| -rw-r--r-- | src/libstd/sys/redox/mod.rs | 20 |
3 files changed, 39 insertions, 22 deletions
diff --git a/src/libstd/path.rs b/src/libstd/path.rs index e7c7be981d2..3f466d5031e 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -2216,12 +2216,22 @@ impl Path { /// This function will traverse symbolic links to query information about the /// destination file. In case of broken symbolic links this will return `false`. /// + /// If you cannot access the directory containing the file, e.g. because of a + /// permission error, this will return `false`. + /// /// # Examples /// /// ```no_run /// use std::path::Path; /// assert_eq!(Path::new("does_not_exist.txt").exists(), false); /// ``` + /// + /// # See Also + /// + /// This is a convenience function that coerces errors to false. If you want to + /// check errors, call [fs::metadata]. + /// + /// [fs::metadata]: ../../std/fs/fn.metadata.html #[stable(feature = "path_ext", since = "1.5.0")] pub fn exists(&self) -> bool { fs::metadata(self).is_ok() @@ -2232,6 +2242,9 @@ impl Path { /// This function will traverse symbolic links to query information about the /// destination file. In case of broken symbolic links this will return `false`. /// + /// If you cannot access the directory containing the file, e.g. because of a + /// permission error, this will return `false`. + /// /// # Examples /// /// ```no_run @@ -2239,6 +2252,15 @@ impl Path { /// assert_eq!(Path::new("./is_a_directory/").is_file(), false); /// assert_eq!(Path::new("a_file.txt").is_file(), true); /// ``` + /// + /// # See Also + /// + /// This is a convenience function that coerces errors to false. If you want to + /// check errors, call [fs::metadata] and handle its Result. Then call + /// [fs::Metadata::is_file] if it was Ok. + /// + /// [fs::metadata]: ../../std/fs/fn.metadata.html + /// [fs::Metadata::is_file]: ../../std/fs/struct.Metadata.html#method.is_file #[stable(feature = "path_ext", since = "1.5.0")] pub fn is_file(&self) -> bool { fs::metadata(self).map(|m| m.is_file()).unwrap_or(false) @@ -2249,6 +2271,9 @@ impl Path { /// This function will traverse symbolic links to query information about the /// destination file. In case of broken symbolic links this will return `false`. /// + /// If you cannot access the directory containing the file, e.g. because of a + /// permission error, this will return `false`. + /// /// # Examples /// /// ```no_run @@ -2256,6 +2281,15 @@ impl Path { /// assert_eq!(Path::new("./is_a_directory/").is_dir(), true); /// assert_eq!(Path::new("a_file.txt").is_dir(), false); /// ``` + /// + /// # See Also + /// + /// This is a convenience function that coerces errors to false. If you want to + /// check errors, call [fs::metadata] and handle its Result. Then call + /// [fs::Metadata::is_dir] if it was Ok. + /// + /// [fs::metadata]: ../../std/fs/fn.metadata.html + /// [fs::Metadata::is_dir]: ../../std/fs/struct.Metadata.html#method.is_dir #[stable(feature = "path_ext", since = "1.5.0")] pub fn is_dir(&self) -> bool { fs::metadata(self).map(|m| m.is_dir()).unwrap_or(false) diff --git a/src/libstd/sys/redox/fs.rs b/src/libstd/sys/redox/fs.rs index 87e50c40148..918893097f8 100644 --- a/src/libstd/sys/redox/fs.rs +++ b/src/libstd/sys/redox/fs.rs @@ -383,9 +383,10 @@ pub fn unlink(p: &Path) -> io::Result<()> { Ok(()) } -pub fn rename(_old: &Path, _new: &Path) -> io::Result<()> { - ::sys_common::util::dumb_print(format_args!("Rename\n")); - unimplemented!(); +pub fn rename(old: &Path, new: &Path) -> io::Result<()> { + copy(old, new)?; + unlink(old)?; + Ok(()) } pub fn set_perm(p: &Path, perm: FilePermissions) -> io::Result<()> { diff --git a/src/libstd/sys/redox/mod.rs b/src/libstd/sys/redox/mod.rs index 31c40ea58b1..7c728ebb1af 100644 --- a/src/libstd/sys/redox/mod.rs +++ b/src/libstd/sys/redox/mod.rs @@ -39,25 +39,7 @@ pub mod thread_local; pub mod time; #[cfg(not(test))] -pub fn init() { - use alloc::oom; - - oom::set_oom_handler(oom_handler); - - // A nicer handler for out-of-memory situations than the default one. This - // one prints a message to stderr before aborting. It is critical that this - // code does not allocate any memory since we are in an OOM situation. Any - // errors are ignored while printing since there's nothing we can do about - // them and we are about to exit anyways. - fn oom_handler() -> ! { - use intrinsics; - let msg = "fatal runtime error: out of memory\n"; - unsafe { - let _ = syscall::write(2, msg.as_bytes()); - intrinsics::abort(); - } - } -} +pub fn init() {} pub fn decode_error_kind(errno: i32) -> ErrorKind { match errno { |
