mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 03:27:44 +00:00
Merge pull request #4960 from granquet/ls_LZ
ls: force fetching metadata when called with -L -Z
This commit is contained in:
commit
a145798594
2 changed files with 24 additions and 0 deletions
|
@ -3008,6 +3008,20 @@ fn display_inode(metadata: &Metadata) -> String {
|
|||
#[allow(unused_variables)]
|
||||
fn get_security_context(config: &Config, p_buf: &Path, must_dereference: bool) -> String {
|
||||
let substitute_string = "?".to_string();
|
||||
// If we must dereference, ensure that the symlink is actually valid even if the system
|
||||
// does not support SELinux.
|
||||
// Conforms to the GNU coreutils where a dangling symlink results in exit code 1.
|
||||
if must_dereference {
|
||||
match get_metadata(p_buf, must_dereference) {
|
||||
Err(err) => {
|
||||
// The Path couldn't be dereferenced, so return early and set exit code 1
|
||||
// to indicate a minor error
|
||||
show!(LsError::IOErrorContext(err, p_buf.to_path_buf(), false));
|
||||
return substitute_string;
|
||||
}
|
||||
Ok(md) => (),
|
||||
}
|
||||
}
|
||||
if config.selinux_supported {
|
||||
#[cfg(feature = "selinux")]
|
||||
{
|
||||
|
|
|
@ -3137,6 +3137,16 @@ fn test_ls_dangling_symlinks() {
|
|||
.stderr_contains("No such file or directory")
|
||||
.stdout_contains(if cfg!(windows) { "dangle" } else { "? dangle" });
|
||||
|
||||
scene
|
||||
.ucmd()
|
||||
.arg("-LZ")
|
||||
.arg("temp_dir")
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_contains("cannot access")
|
||||
.stderr_contains("No such file or directory")
|
||||
.stdout_contains(if cfg!(windows) { "dangle" } else { "? dangle" });
|
||||
|
||||
scene
|
||||
.ucmd()
|
||||
.arg("-Ll")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue