aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2016-03-06 17:53:11 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2016-03-06 17:53:11 +0100
commitea351b97428f7dc921d5431ccac366201754fcef (patch)
treeae1155eace4dc3f56fdad2ce146c549a76adb07f
parent7849ccb61c376e4704ce1c3e5a0d12fd7d743200 (diff)
downloadbusybox-ea351b97428f7dc921d5431ccac366201754fcef.tar.gz
ls: fix columnar output. Closes 8731
In coreutils/ls.c, 1.19 introduced commit 2f7d9e8903029b1b5e51a15f9cb0dcb6ca17c3ac, 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>
-rw-r--r--coreutils/ls.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c
index c48498858..20bd61860 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -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]);