1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 03:27:44 +00:00

Merge pull request #2848 from jfinkels/realpath-uresult

realpath: return UResult from uumain() function
This commit is contained in:
Sylvestre Ledru 2022-01-07 21:51:57 +01:00 committed by GitHub
commit c9d982fb4d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -17,6 +17,7 @@ use std::{
}; };
use uucore::{ use uucore::{
display::{print_verbatim, Quotable}, display::{print_verbatim, Quotable},
error::{FromIo, UResult},
fs::{canonicalize, MissingHandling, ResolveMode}, fs::{canonicalize, MissingHandling, ResolveMode},
}; };
@ -36,7 +37,8 @@ fn usage() -> String {
format!("{0} [OPTION]... FILE...", uucore::execution_phrase()) format!("{0} [OPTION]... FILE...", uucore::execution_phrase())
} }
pub fn uumain(args: impl uucore::Args) -> i32 { #[uucore_procs::gen_uumain]
pub fn uumain(args: impl uucore::Args) -> UResult<()> {
let usage = usage(); let usage = usage();
let matches = uu_app().usage(&usage[..]).get_matches_from(args); let matches = uu_app().usage(&usage[..]).get_matches_from(args);
@ -60,16 +62,16 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
} else { } else {
MissingHandling::Normal MissingHandling::Normal
}; };
let mut retcode = 0;
for path in &paths { for path in &paths {
if let Err(e) = resolve_path(path, strip, zero, logical, can_mode) { let result = resolve_path(path, strip, zero, logical, can_mode);
if !quiet { if !quiet {
show_error!("{}: {}", path.maybe_quote(), e); show_if_err!(result.map_err_context(|| path.maybe_quote().to_string()));
} }
retcode = 1
};
} }
retcode // Although we return `Ok`, it is possible that a call to
// `show!()` above has set the exit code for the program to a
// non-zero integer.
Ok(())
} }
pub fn uu_app() -> App<'static, 'static> { pub fn uu_app() -> App<'static, 'static> {