From e03ab6b554873b5ef6a7b9cb55e99a3b80a30cfb Mon Sep 17 00:00:00 2001 From: Connor E <38229097+c-edw@users.noreply.github.com> Date: Tue, 1 May 2018 12:07:23 +0100 Subject: [PATCH] mkdir: Silently fail in recursive mode if unable to create directories. --- src/mkdir/mkdir.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/mkdir/mkdir.rs b/src/mkdir/mkdir.rs index ec07d36e8..309b6b50e 100644 --- a/src/mkdir/mkdir.rs +++ b/src/mkdir/mkdir.rs @@ -94,10 +94,10 @@ fn exec(dirs: Vec, recursive: bool, mode: u16, verbose: bool) -> i32 { let path = Path::new(dir); if recursive { let mut pathbuf = PathBuf::new(); - for component in path.components() { - pathbuf.push(component.as_os_str()); - if !path.is_dir() { - status |= mkdir(pathbuf.as_path(), mode, verbose); + if !path.is_dir() { + for component in path.components() { + pathbuf.push(component.as_os_str()); + mkdir(pathbuf.as_path(), recursive, mode, verbose); } } } else { @@ -110,11 +110,11 @@ fn exec(dirs: Vec, recursive: bool, mode: u16, verbose: bool) -> i32 { ); status = 1; } else { - status |= mkdir(path, mode, verbose); + status |= mkdir(path, recursive, mode, verbose); } } None => { - status |= mkdir(path, mode, verbose); + status |= mkdir(path, recursive, mode, verbose); } } } @@ -125,9 +125,11 @@ fn exec(dirs: Vec, recursive: bool, mode: u16, verbose: bool) -> i32 { /** * Wrapper to catch errors, return 1 if failed */ -fn mkdir(path: &Path, mode: u16, verbose: bool) -> i32 { +fn mkdir(path: &Path, recursive: bool, mode: u16, verbose: bool) -> i32 { if let Err(e) = fs::create_dir(path) { - show_info!("{}: {}", path.display(), e.to_string()); + if !recursive { + show_info!("{}: {}", path.display(), e.to_string()); + } return 1; }