mirror of
https://git.savannah.gnu.org/git/coreutils.git
synced 2025-09-10 07:59:52 +02:00
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
This commit is contained in:
2
src/ls.c
2
src/ls.c
@@ -4444,7 +4444,7 @@ print_long_format (const struct fileinfo *f)
|
|||||||
hbuf, file_human_output_opts, 1,
|
hbuf, file_human_output_opts, 1,
|
||||||
file_output_block_size));
|
file_output_block_size));
|
||||||
int size_width = mbswidth (size, MBSWIDTH_FLAGS);
|
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--)
|
0 < pad; pad--)
|
||||||
*p++ = ' ';
|
*p++ = ' ';
|
||||||
while ((*p++ = *size++))
|
while ((*p++ = *size++))
|
||||||
|
|||||||
@@ -635,6 +635,7 @@ all_tests = \
|
|||||||
tests/ls/no-cap.sh \
|
tests/ls/no-cap.sh \
|
||||||
tests/ls/selinux-segfault.sh \
|
tests/ls/selinux-segfault.sh \
|
||||||
tests/ls/quote-align.sh \
|
tests/ls/quote-align.sh \
|
||||||
|
tests/ls/size-align.sh \
|
||||||
tests/ls/readdir-mountpoint-inode.sh \
|
tests/ls/readdir-mountpoint-inode.sh \
|
||||||
tests/ls/recursive.sh \
|
tests/ls/recursive.sh \
|
||||||
tests/ls/removed-directory.sh \
|
tests/ls/removed-directory.sh \
|
||||||
|
|||||||
32
tests/ls/size-align.sh
Executable file
32
tests/ls/size-align.sh
Executable file
@@ -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 <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
. "${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
|
||||||
Reference in New Issue
Block a user