mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37: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)]
|
#[allow(unused_variables)]
|
||||||
fn get_security_context(config: &Config, p_buf: &Path, must_dereference: bool) -> String {
|
fn get_security_context(config: &Config, p_buf: &Path, must_dereference: bool) -> String {
|
||||||
let substitute_string = "?".to_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 {
|
if config.selinux_supported {
|
||||||
#[cfg(feature = "selinux")]
|
#[cfg(feature = "selinux")]
|
||||||
{
|
{
|
||||||
|
|
|
@ -3137,6 +3137,16 @@ fn test_ls_dangling_symlinks() {
|
||||||
.stderr_contains("No such file or directory")
|
.stderr_contains("No such file or directory")
|
||||||
.stdout_contains(if cfg!(windows) { "dangle" } else { "? dangle" });
|
.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
|
scene
|
||||||
.ucmd()
|
.ucmd()
|
||||||
.arg("-Ll")
|
.arg("-Ll")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue