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; }