ls: fix columnar output. Closes 8731
In coreutils/ls.c, 1.19 introduced commit
2f7d9e8903
, removing the variable tabstops and
hard coding the column separation to 2 characters, but was not done correctly.
The column_width assumes a gap of 1 character, so the computed number of
columns exceeds the terminal width when many small files are encountered.
A minor problem but surprisingly annoying.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
7849ccb61c
commit
ea351b9742
@ -668,7 +668,7 @@ static void display_files(struct dnode **dn, unsigned nfiles)
|
||||
if (column_width < len)
|
||||
column_width = len;
|
||||
}
|
||||
column_width += 1 +
|
||||
column_width += 2 +
|
||||
IF_SELINUX( ((G.all_fmt & LIST_CONTEXT) ? 33 : 0) + )
|
||||
((G.all_fmt & LIST_INO) ? 8 : 0) +
|
||||
((G.all_fmt & LIST_BLOCKS) ? 5 : 0);
|
||||
@ -696,8 +696,8 @@ static void display_files(struct dnode **dn, unsigned nfiles)
|
||||
if (i < nfiles) {
|
||||
if (column > 0) {
|
||||
nexttab -= column;
|
||||
printf("%*s ", nexttab, "");
|
||||
column += nexttab + 1;
|
||||
printf("%*s", nexttab, "");
|
||||
column += nexttab;
|
||||
}
|
||||
nexttab = column + column_width;
|
||||
column += display_single(dn[i]);
|
||||
|
Loading…
Reference in New Issue
Block a user