diff --git a/src/uu/pathchk/src/pathchk.rs b/src/uu/pathchk/src/pathchk.rs index 635ae6e9820..48ecc915c48 100644 --- a/src/uu/pathchk/src/pathchk.rs +++ b/src/uu/pathchk/src/pathchk.rs @@ -10,8 +10,10 @@ use std::ffi::OsString; use std::fs; use std::io::{ErrorKind, Write}; use uucore::display::Quotable; +use uucore::error::strip_errno; use uucore::error::{UResult, UUsageError, set_exit_code}; use uucore::format_usage; +use uucore::show_error; use uucore::translate; // operating mode @@ -255,7 +257,7 @@ fn check_searchable(path: &str) -> bool { if e.kind() == ErrorKind::NotFound { true } else { - writeln!(std::io::stderr(), "{e}"); + show_error!("{}: {}", path, strip_errno(&e)); false } } diff --git a/tests/by-util/test_pathchk.rs b/tests/by-util/test_pathchk.rs index 47fb1e01d1b..d6d7b61bbd0 100644 --- a/tests/by-util/test_pathchk.rs +++ b/tests/by-util/test_pathchk.rs @@ -180,3 +180,13 @@ fn test_pathchk_non_utf8_paths() { let filename = std::ffi::OsString::from_vec(vec![0xFF, 0xFE]); new_ucmd!().arg(&filename).succeeds(); } + +#[test] +#[cfg(target_os = "linux")] +fn test_not_a_directory_clean() { + // https://github.com/uutils/coreutils/issues/13888 + new_ucmd!() + .arg("/dev/full/") + .fails() + .stderr_is("pathchk: /dev/full/: Not a directory\n"); +}