diff --git a/src/uucore/src/lib/features/fs.rs b/src/uucore/src/lib/features/fs.rs index 27dcdee82..8f7c13d20 100644 --- a/src/uucore/src/lib/features/fs.rs +++ b/src/uucore/src/lib/features/fs.rs @@ -402,12 +402,26 @@ pub fn canonicalize>( } #[cfg(not(unix))] -#[allow(unused_variables)] pub fn display_permissions(metadata: &fs::Metadata, display_file_type: bool) -> String { + let write = if metadata.permissions().readonly() { + '-' + } else { + 'w' + }; + if display_file_type { - return String::from("----------"); + let file_type = if metadata.is_symlink() { + 'l' + } else if metadata.is_dir() { + 'd' + } else { + '-' + }; + + format!("{0}r{1}xr{1}xr{1}x", file_type, write) + } else { + format!("r{0}xr{0}xr{0}x", write) } - String::from("---------") } #[cfg(unix)] diff --git a/tests/by-util/test_ls.rs b/tests/by-util/test_ls.rs index 920f8148f..310c84290 100644 --- a/tests/by-util/test_ls.rs +++ b/tests/by-util/test_ls.rs @@ -966,7 +966,7 @@ fn test_ls_long() { result.stdout_matches(&Regex::new(r"[-bcCdDlMnpPsStTx?]([r-][w-][xt-]){3}.*").unwrap()); #[cfg(windows)] - result.stdout_contains("---------- 1 somebody somegroup"); + result.stdout_matches(&Regex::new(r"[-dl](r[w-]x){3}.*").unwrap()); } }