diff --git a/src/uu_ls/ls.rs.html b/src/uu_ls/ls.rs.html
index 7f70f7887..562267e10 100644
--- a/src/uu_ls/ls.rs.html
+++ b/src/uu_ls/ls.rs.html
@@ -1881,6 +1881,80 @@
1879
1880
1881
+1882
+1883
+1884
+1885
+1886
+1887
+1888
+1889
+1890
+1891
+1892
+1893
+1894
+1895
+1896
+1897
+1898
+1899
+1900
+1901
+1902
+1903
+1904
+1905
+1906
+1907
+1908
+1909
+1910
+1911
+1912
+1913
+1914
+1915
+1916
+1917
+1918
+1919
+1920
+1921
+1922
+1923
+1924
+1925
+1926
+1927
+1928
+1929
+1930
+1931
+1932
+1933
+1934
+1935
+1936
+1937
+1938
+1939
+1940
+1941
+1942
+1943
+1944
+1945
+1946
+1947
+1948
+1949
+1950
+1951
+1952
+1953
+1954
+1955
@@ -3278,14 +3352,17 @@ only ignore '.' and '..'.",
}
}
-fn display_dir_entry_size(entry: &PathData, config: &Config) -> (usize, usize) {
+fn display_dir_entry_size(entry: &PathData, config: &Config) -> (usize, usize, usize, usize) {
+
if let Some(md) = entry.md() {
(
display_symlink_count(md).len(),
+ display_uname(md, config).len(),
+ display_group(md, config).len(),
display_size_or_rdev(md, config).len(),
)
} else {
- (0, 0)
+ (0, 0, 0, 0)
}
}
@@ -3293,15 +3370,28 @@ only ignore '.' and '..'.",
format!("{:>width$}", string, width = count)
}
+fn pad_right(string: String, count: usize) -> String {
+ format!("{:<width$}", string, width = count)
+}
+
fn display_items(items: &[PathData], config: &Config, out: &mut BufWriter<Stdout>) {
if config.format == Format::Long {
- let (mut max_links, mut max_width) = (1, 1);
+ let (
+ mut longest_link_count_len,
+ mut longest_uname_len,
+ mut longest_group_len,
+ mut longest_size_len,
+ ) = (1, 1, 1, 1);
let mut total_size = 0;
for item in items {
- let (links, width) = display_dir_entry_size(item, config);
- max_links = links.max(max_links);
- max_width = width.max(max_width);
+ let (link_count_len, uname_len, group_len, size_len) =
+ display_dir_entry_size(item, config);
+ longest_link_count_len = link_count_len.max(longest_link_count_len);
+ longest_size_len = size_len.max(longest_size_len);
+ longest_uname_len = uname_len.max(longest_uname_len);
+ longest_group_len = group_len.max(longest_group_len);
+ longest_size_len = size_len.max(longest_size_len);
total_size += item.md().map_or(0, |md| get_block_size(md, config));
}
@@ -3310,7 +3400,15 @@ only ignore '.' and '..'.",
}
for item in items {
- display_item_long(item, max_links, max_width, config, out);
+ display_item_long(
+ item,
+ longest_link_count_len,
+ longest_uname_len,
+ longest_group_len,
+ longest_size_len,
+ config,
+ out,
+ );
}
} else {
let names = items.iter().filter_map(|i| display_file_name(i, config));
@@ -3415,10 +3513,48 @@ only ignore '.' and '..'.",
}
}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
fn display_item_long(
item: &PathData,
- max_links: usize,
- max_size: usize,
+ longest_link_count_len: usize,
+ longest_uname_len: usize,
+ longest_group_len: usize,
+ longest_size_len: usize,
config: &Config,
out: &mut BufWriter<Stdout>,
) {
@@ -3441,27 +3577,39 @@ only ignore '.' and '..'.",
out,
"{} {}",
display_permissions(md, true),
- pad_left(display_symlink_count(md), max_links),
+ pad_left(display_symlink_count(md), longest_link_count_len),
);
if config.long.owner {
- let _ = write!(out, " {}", display_uname(md, config));
+ let _ = write!(
+ out,
+ " {}",
+ pad_right(display_uname(md, config), longest_uname_len)
+ );
}
if config.long.group {
- let _ = write!(out, " {}", display_group(md, config));
+ let _ = write!(
+ out,
+ " {}",
+ pad_right(display_group(md, config), longest_group_len)
+ );
}
if config.long.author {
- let _ = write!(out, " {}", display_uname(md, config));
+ let _ = write!(
+ out,
+ " {}",
+ pad_right(display_uname(md, config), longest_uname_len)
+ );
}
let _ = writeln!(
out,
" {} {} {}",
- pad_left(display_size_or_rdev(md, config), max_size),
+ pad_left(display_size_or_rdev(md, config), longest_size_len),
display_date(md, config),
diff --git a/uu_ls/index.html b/uu_ls/index.html
index 8764464d1..ef00c7797 100644
--- a/uu_ls/index.html
+++ b/uu_ls/index.html
@@ -1,5 +1,5 @@
uu_ls - Rust
-
+
\ No newline at end of file