From: Pádraig Brady Date: Fri, 3 Nov 2023 16:22:22 +0000 (+0000) Subject: ls: fix recent regression in size alignment X-Git-Tag: v9.5~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f2c97a2411e66c32ef8e6818416a0a2231c5b8e;p=thirdparty%2Fcoreutils.git ls: fix recent regression in size alignment * src/ls.c (print_long_format): Use correct column width, introduced due to a copy/paste error in commit v9.4-2-gcbb6dfec5 * tests/ls/size-align.sh: Add a test. * tests/local.mk: Reference the new test. Fixes https://bugs.gnu.org/66919 --- diff --git a/src/ls.c b/src/ls.c index e16972d3ec..2631526635 100644 --- a/src/ls.c +++ b/src/ls.c @@ -4444,7 +4444,7 @@ print_long_format (const struct fileinfo *f) hbuf, file_human_output_opts, 1, file_output_block_size)); int size_width = mbswidth (size, MBSWIDTH_FLAGS); - for (int pad = size_width < 0 ? 0 : block_size_width - size_width; + for (int pad = size_width < 0 ? 0 : file_size_width - size_width; 0 < pad; pad--) *p++ = ' '; while ((*p++ = *size++)) diff --git a/tests/local.mk b/tests/local.mk index a5fb62d969..db4ee7ed87 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -635,6 +635,7 @@ all_tests = \ tests/ls/no-cap.sh \ tests/ls/selinux-segfault.sh \ tests/ls/quote-align.sh \ + tests/ls/size-align.sh \ tests/ls/readdir-mountpoint-inode.sh \ tests/ls/recursive.sh \ tests/ls/removed-directory.sh \ diff --git a/tests/ls/size-align.sh b/tests/ls/size-align.sh new file mode 100755 index 0000000000..350e85d0d2 --- /dev/null +++ b/tests/ls/size-align.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# test size alignment + +# Copyright (C) 2023 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src +print_ver_ ls truncate + +truncate -s 0 small || framework_failure_ +truncate -s 123456 large || framework_failure_ +echo > alloc || framework_failure_ + +ls -s -l small alloc large > out || fail=1 +len=$(wc -L < out) || framework_failure_ +lines=$(wc -l < out) || framework_failure_ +same=$(grep "^.\\{$len\\}\$" out | wc -l) || framework_failure_ +test "$same" = "$lines" || { cat out; fail=1; } + +Exit $fail