diff options
| author | Pádraig Brady <P@draigBrady.com> | 2022-12-31 17:03:39 +0000 |
|---|---|---|
| committer | Pádraig Brady <P@draigBrady.com> | 2022-12-31 19:01:59 +0000 |
| commit | c9a21ec3173b93de4839e5ff9eddadb020431656 (patch) | |
| tree | ffa75643c1d3677533127e59a635cc054a636885 | |
| parent | copy: attempt copy offload with sparse files by default (diff) | |
| download | coreutils-c9a21ec3173b93de4839e5ff9eddadb020431656.tar.gz coreutils-c9a21ec3173b93de4839e5ff9eddadb020431656.zip | |
stty: fix off by one column wrapping on output
* src/stty.c (wrapf): Adjust the comparison by 1,
to account for the space we're adding.
* tests/misc/stty.sh: Add a test case.
* NEWS: Mention the fix.
Reported in https://bugs.debian.org/1027442
| -rw-r--r-- | NEWS | 4 | ||||
| -rw-r--r-- | src/stty.c | 2 | ||||
| -rwxr-xr-x | tests/misc/stty.sh | 6 |
3 files changed, 11 insertions, 1 deletions
@@ -32,6 +32,10 @@ GNU coreutils NEWS -*- outline -*- and the system supported set of valid speeds. [This bug was present in "the beginning".] + stty now wraps output appropriately for the terminal width. + Previously it may have output 1 character too wide for certain widths. + [bug introduced in coreutils-5.3] + `wc -c` will again efficiently determine the size of large files on all systems. It no longer redundantly reads data from certain sized files larger than SIZE_MAX. diff --git a/src/stty.c b/src/stty.c index b4c2cbecd..f3c7915e1 100644 --- a/src/stty.c +++ b/src/stty.c @@ -519,7 +519,7 @@ wrapf (char const *message,...) if (0 < current_col) { - if (max_col - current_col < buflen) + if (max_col - current_col <= buflen) { putchar ('\n'); current_col = 0; diff --git a/tests/misc/stty.sh b/tests/misc/stty.sh index bcdc80e87..7abcec5af 100755 --- a/tests/misc/stty.sh +++ b/tests/misc/stty.sh @@ -89,4 +89,10 @@ returns_ 1 strace -o log2 -e ioctl stty -blahblah || fail=1 n_ioctl2=$(wc -l < log2) || framework_failure_ test "$n_ioctl1" = "$n_ioctl2" || fail=1 +# Ensure we wrap output appropriately +for W in $(seq 80 90); do + output_width=$(COLUMNS="$W" stty -a | wc -L) + test "$output_width" -le "$W" || fail=1 +done + Exit $fail |
