From bb1d8956eba4599af805857f4018b6e51ee51378 Mon Sep 17 00:00:00 2001 From: Shinichiro Hamaji Date: Tue, 4 Apr 2017 00:10:45 +0900 Subject: [PATCH] rm: Fail when symlink_metadata() fails --- src/rm/rm.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/rm/rm.rs b/src/rm/rm.rs index 087f73b9d..73c2d07ed 100644 --- a/src/rm/rm.rs +++ b/src/rm/rm.rs @@ -129,7 +129,15 @@ fn remove(files: Vec, force: bool, interactive: InteractiveMode, one_fs: let filename = &filename[..]; let file = Path::new(filename); if file.exists() { - if file.symlink_metadata().unwrap().is_dir() { + let is_dir = match file.symlink_metadata() { + Ok(metadata) => metadata.is_dir(), + Err(e) => { + had_err = true; + show_error!("could not read metadata of '{}': {}", filename, e); + continue; + } + }; + if is_dir { if recursive && (filename != "/" || !preserve_root) { if interactive != InteractiveMode::InteractiveAlways { if let Err(e) = fs::remove_dir_all(file) {