From 326e5855bc8dd3d0c5b2c0e461c65879d2b5694d Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Wed, 9 Jan 2013 12:23:35 +0000 Subject: seq: fix misaligment with -w when no precision for start value * src/seq.c (get_default_format): Also account for the case where '.' is auto added to the start value, which is significant when the number sequence narrows. * tests/misc/seq.pl: Add two new tests for the failing cases. * NEWS: Mention the fix. Fixes http://bugs.gnu.org/13394 --- NEWS | 4 ++++ src/seq.c | 2 ++ tests/misc/seq.pl | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/NEWS b/NEWS index 34754bb17..26939c178 100644 --- a/NEWS +++ b/NEWS @@ -51,6 +51,10 @@ GNU coreutils NEWS -*- outline -*- the output numbers are properly aligned and of the correct width. [This bug was present in "the beginning".] + seq -w ensures correct alignment when the step value includes a precision + while the start value does not, and the number sequence narrows. + [This bug was present in "the beginning".] + seq -s no longer prints an erroneous newline after the first number, and outputs a newline after the last number rather than a trailing separator. [bug introduced in coreutils-8.20] diff --git a/src/seq.c b/src/seq.c index 22e5ec5da..5ad5fad94 100644 --- a/src/seq.c +++ b/src/seq.c @@ -336,6 +336,8 @@ get_default_format (operand first, operand step, operand last) last_width--; /* don't include space for '.' */ if (last.precision == 0 && prec) last_width++; /* include space for '.' */ + if (first.precision == 0 && prec) + first_width++; /* include space for '.' */ size_t width = MAX (first_width, last_width); if (width <= INT_MAX) { diff --git a/tests/misc/seq.pl b/tests/misc/seq.pl index 40a75714d..64c62b2bc 100755 --- a/tests/misc/seq.pl +++ b/tests/misc/seq.pl @@ -77,6 +77,10 @@ my @Tests = ['eq-wid-11',qw(-w -1.e-3 1), {OUT => [qw(-0.001 00.999)]}], ['eq-wid-12',qw(-w -1.0e-4 1), {OUT => [qw(-0.00010 00.99990)]}], ['eq-wid-13',qw(-w 999 1e3), {OUT => [qw(0999 1000)]}], + # Prior to 8.21, if the start value hadn't a precision, while step did, + # then misalignment would occur if the sequence narrowed. + ['eq-wid-14',qw(-w -1 1.0 0), {OUT => [qw(-1.0 00.0)]}], + ['eq-wid-15',qw(-w 10 -.1 9.9), {OUT => [qw(10.0 09.9)]}], # Prior to coreutils-4.5.11, some of these were not accepted. ['fmt-1', qw(-f %2.1f 1.5 .5 2),{OUT => [qw(1.5 2.0)]}], -- cgit v1.2.3-70-g09d2