1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-29 12:07:46 +00:00

Get test suite passing again by tweaking error handling in mkdir

Replace `show_error!` with Result<(), int> and `display_error!`
This commit is contained in:
Brian Anderson 2014-06-08 01:37:02 -07:00
parent 0ee4fb0576
commit 962a6bbf2f
2 changed files with 23 additions and 6 deletions

View file

@ -20,6 +20,16 @@ macro_rules! show_error(
}) })
) )
// FIXME #211: Transitional until there are no further users of `show_error!`.
// Then this can be renamed.
#[macro_export]
macro_rules! display_error(
($($args:expr),+) => ({
safe_write!(&mut ::std::io::stderr(), "{}: error: ", ::NAME);
safe_writeln!(&mut ::std::io::stderr(), $($args),+);
})
)
#[macro_export] #[macro_export]
macro_rules! show_warning( macro_rules! show_warning(
($($args:expr),+) => ({ ($($args:expr),+) => ({

View file

@ -84,9 +84,10 @@ pub fn uumain(args: Vec<String>) -> int {
if dirs.is_empty() { if dirs.is_empty() {
crash!(1, "missing operand"); crash!(1, "missing operand");
} }
exec(dirs, mk_parents, mode, verbose_flag); match exec(dirs, mk_parents, mode, verbose_flag) {
Ok(()) => return 0,
return 0; Err(e) => return e
}
} }
fn print_help(opts: &[getopts::OptGroup]) { fn print_help(opts: &[getopts::OptGroup]) {
@ -99,7 +100,7 @@ fn print_help(opts: &[getopts::OptGroup]) {
/** /**
* Create the list of new directories * Create the list of new directories
*/ */
fn exec(dirs: Vec<String>, mk_parents: bool, mode: FilePermission, verbose: bool) { fn exec(dirs: Vec<String>, mk_parents: bool, mode: FilePermission, verbose: bool) -> Result<(), int> {
let mut parent_dirs = Vec::new(); let mut parent_dirs = Vec::new();
if mk_parents { if mk_parents {
for dir in dirs.iter() { for dir in dirs.iter() {
@ -118,7 +119,10 @@ fn exec(dirs: Vec<String>, mk_parents: bool, mode: FilePermission, verbose: bool
} }
// Recursively build parent dirs that are needed // Recursively build parent dirs that are needed
if !parent_dirs.is_empty() { if !parent_dirs.is_empty() {
exec(parent_dirs, mk_parents, mode, verbose); match exec(parent_dirs, mk_parents, mode, verbose) {
Ok(()) => ( /* keep going */ ),
Err(e) => return Err(e)
}
} }
for dir in dirs.iter() { for dir in dirs.iter() {
@ -140,9 +144,12 @@ fn exec(dirs: Vec<String>, mk_parents: bool, mode: FilePermission, verbose: bool
} else { } else {
format!("directory '{}' already exists", *dir) format!("directory '{}' already exists", *dir)
}; };
show_error!(1, "{}", error_msg); display_error!("{}", error_msg);
return Err(1);
} }
} }
return Ok(());
} }
/** /**