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

Merge pull request #5423 from Luv-Ray/fix-pathchk-issue5314

`pathchk`: check empty path by default
This commit is contained in:
Daniel Hofstetter 2023-10-19 09:33:42 +02:00 committed by GitHub
commit a3c6d6d91e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View file

@ -193,6 +193,17 @@ fn check_default(path: &[String]) -> bool {
);
return false;
}
if total_len == 0 {
// Check whether a file name component is in a directory that is not searchable,
// or has some other serious problem. POSIX does not allow "" as a file name,
// but some non-POSIX hosts do (as an alias for "."),
// so allow "" if `symlink_metadata` (corresponds to `lstat`) does.
if fs::symlink_metadata(&joined_path).is_err() {
writeln!(std::io::stderr(), "pathchk: '': No such file or directory",);
return false;
}
}
// components: length
for p in path {
let component_len = p.len();

View file

@ -19,8 +19,16 @@ fn test_default_mode() {
// accept non-portable chars
new_ucmd!().args(&["dir#/$file"]).succeeds().no_stdout();
// accept empty path
new_ucmd!().args(&[""]).succeeds().no_stdout();
// fail on empty path
new_ucmd!()
.args(&[""])
.fails()
.stderr_only("pathchk: '': No such file or directory\n");
new_ucmd!().args(&["", ""]).fails().stderr_only(
"pathchk: '': No such file or directory\n\
pathchk: '': No such file or directory\n",
);
// fail on long path
new_ucmd!()