]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
seq: Fix equal width calculation when '.' added to last number
authorPádraig Brady <P@draigBrady.com>
Sat, 14 Feb 2009 17:20:37 +0000 (17:20 +0000)
committerPádraig Brady <P@draigBrady.com>
Sat, 14 Feb 2009 23:47:14 +0000 (23:47 +0000)
Issue reported by Samuel Hapák.
<http://lists.gnu.org/archive/html/bug-coreutils/2009-02/msg00139.html>

* src/seq.c: Account for '.' added to "last" number.
* tests/misc/seq: Add corresponding test.
* NEWS: Mention the fix.

NEWS
src/seq.c
tests/misc/seq

diff --git a/NEWS b/NEWS
index a83ca66dc7b53abe0a36d4c1eae1f341bd83c323..9de4f256ded1f0dd40f03246bef008ae72d6cb42 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -35,6 +35,9 @@ GNU coreutils NEWS                                    -*- outline -*-
   Even with this patch, on some systems, it still produces invalid output,
   from 3 to at least 1026 lines long. [bug introduced in coreutils-6.11]
 
+  seq -w now accounts for a decimal point added to the last number
+  to correctly print all numbers to the same width.
+
   wc --files0-from=FILE no longer reads all of FILE into RAM, before
   processing the first file name, unless the list of names is known
   to be small enough.
index 5f9da963bcb7d5ea2d0fe43b407224724ce4fb4c..ecc72f082a31cfd5b72b96ddfc8d5d608ba5c11b 100644 (file)
--- a/src/seq.c
+++ b/src/seq.c
@@ -317,6 +317,8 @@ get_default_format (operand first, operand step, operand last)
          size_t last_width = last.width + (prec - last.precision);
          if (last.precision && prec == 0)
            last_width--;  /* don't include space for '.' */
+         if (last.precision == 0 && prec)
+           last_width++;  /* include space for '.' */
          size_t width = MAX (first_width, last_width);
          if (width <= INT_MAX)
            {
index 7f808cf6c813ba8a79b52dcf556d1fabaf05b4ac..cd78bd1640e53486a22a6b184f61bfc052a8a46d 100755 (executable)
@@ -64,6 +64,7 @@ my @Tests =
    ['eq-wid-5',        qw(-w 1 .5 2),  {OUT => [qw(1.0 1.5 2.0)]}],
    ['eq-wid-6',        qw(-w +1 2),  {OUT => [qw(1 2)]}],
    ['eq-wid-7',        qw(-w "    .1"  "    .1"),  {OUT => [qw(0.1)]}],
+   ['eq-wid-8',        qw(-w 9 0.5 10),  {OUT => [qw(09.0 09.5 10.0)]}],
 
    # 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)]}],