diff --git a/coreutils-8.20-seq-s.patch b/coreutils-8.20-seq-s.patch new file mode 100644 index 0000000..ecf5338 --- /dev/null +++ b/coreutils-8.20-seq-s.patch @@ -0,0 +1,113 @@ +From 9d9cdfd5df898ade2e680aab5ce37fcd0032c687 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?P=C3=A1draig=20Brady?=
+Date: Wed, 19 Dec 2012 19:27:10 +0000
+Subject: [PATCH] seq: fix newline output when -s specified
+
+This regression was introduced in commit v8.19-132-g3786fb6.
+
+* src/seq.c (seq_fast): Don't use puts() to output the first number,
+and instead insert it into the buffer as for other numbers.
+Also output the terminator unconditionally.
+* tests/misc/seq.pl: Add some basic tests for the -s option.
+* NEWS: Mention the fix.
+* THANKS.in: Reported by Philipp Gortan.
+---
+ NEWS | 4 ++++
+ THANKS.in | 1 +
+ src/seq.c | 20 +++++++++++++-------
+ tests/misc/seq.pl | 5 +++++
+ 4 files changed, 23 insertions(+), 7 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index e4472df..ae7ec2a 100644
+--- a/NEWS
++++ b/NEWS
+@@ -43,6 +43,10 @@ GNU coreutils NEWS -*- outline -*-
+ the output numbers are properly aligned and of the correct width.
+ [This bug was present in "the beginning".]
+
++ seq -s now doesn't output 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]
++
+ ** Changes in behavior
+
+ df --total now prints '-' into the target column (mount point) of the
+diff --git a/THANKS.in b/THANKS.in
+index c2651e7..67b60b9 100644
+--- a/THANKS.in
++++ b/THANKS.in
+@@ -505,6 +505,7 @@ Phil Richards phil.richards@vf.vodafone.co.uk
+ Philippe De Muyter phdm@macqel.be
+ Philippe Schnoebelen Philippe.Schnoebelen@imag.fr
+ Phillip Jones mouse@datastacks.com
++Philipp Gortan gortan@gmail.com
+ Philipp Thomas pth@suse.de
+ Piergiorgio Sartor sartor@sony.de
+ Pieter Bowman bowman@math.utah.edu
+diff --git a/src/seq.c b/src/seq.c
+index 9c2c51f..108808b 100644
+--- a/src/seq.c
++++ b/src/seq.c
+@@ -419,30 +419,36 @@ seq_fast (char const *a, char const *b)
+ bool ok = cmp (p, p_len, q, q_len) <= 0;
+ if (ok)
+ {
+- /* Buffer at least this many output lines per fwrite call.
++ /* Buffer at least this many numbers per fwrite call.
+ This gives a speed-up of more than 2x over the unbuffered code
+ when printing the first 10^9 integers. */
+ enum {N = 40};
+ char *buf = xmalloc (N * (n + 1));
+ char const *buf_end = buf + N * (n + 1);
+
+- puts (p);
+ char *z = buf;
++
++ /* Write first number to buffer. */
++ z = mempcpy (z, p, p_len);
++
++ /* Append separator then number. */
+ while (cmp (p, p_len, q, q_len) < 0)
+ {
++ *z++ = *separator;
+ incr (&p, &p_len);
+ z = mempcpy (z, p, p_len);
+- *z++ = *separator;
+- if (buf_end - n - 1 < z)
++ /* If no place for another separator + number then
++ output buffer so far, and reset to start of buffer. */
++ if (buf_end - (n + 1) < z)
+ {
+ fwrite (buf, z - buf, 1, stdout);
+ z = buf;
+ }
+ }
+
+- /* Write any remaining, buffered output. */
+- if (buf < z)
+- fwrite (buf, z - buf, 1, stdout);
++ /* Write any remaining buffered output, and the terminator. */
++ *z++ = *terminator;
++ fwrite (buf, z - buf, 1, stdout);
+
+ IF_LINT (free (buf));
+ }
+diff --git a/tests/misc/seq.pl b/tests/misc/seq.pl
+index 447baa4..416b839 100755
+--- a/tests/misc/seq.pl
++++ b/tests/misc/seq.pl
+@@ -128,6 +128,11 @@ my @Tests =
+ ['long-leading-zeros2', qw(000 02), {OUT => [qw(0 1 2)]}],
+ ['long-leading-zeros3', qw(00 02), {OUT => [qw(0 1 2)]}],
+ ['long-leading-zeros4', qw(0 02), {OUT => [qw(0 1 2)]}],
++
++ # Exercise the -s option, which was broken in 8.20
++ ['sep-1', qw(-s, 1 3), {OUT => [qw(1,2,3)]}],
++ ['sep-2', qw(-s, 1 1), {OUT => [qw(1)]}],
++ ['sep-3', qw(-s,, 1 3), {OUT => [qw(1,,2,,3)]}],
+ );
+
+ # Append a newline to each entry in the OUT array.
+--
+1.7.6.4
diff --git a/coreutils.spec b/coreutils.spec
index 5f38525..bbd1fb6 100644
--- a/coreutils.spec
+++ b/coreutils.spec
@@ -1,7 +1,7 @@
Summary: A set of basic GNU tools commonly used in shell scripts
Name: coreutils
Version: 8.20
-Release: 4%{?dist}
+Release: 5%{?dist}
License: GPLv3+
Group: System Environment/Base
Url: http://www.gnu.org/software/coreutils/
@@ -16,6 +16,7 @@ Source106: coreutils-colorls.csh
# From upstream
Patch1: coreutils-8.20-powerpcfactor.patch
Patch2: coreutils-8.20-df-duplicates.patch
+Patch3: coreutils-8.20-seq-s.patch
# Our patches
#general patch to workaround koji build system issues
@@ -130,6 +131,7 @@ the old GNU fileutils, sh-utils, and textutils packages.
# From upstream
%patch1 -p1 -b .ppcfactor
%patch2 -p1 -b .duplic
+%patch3 -p1 -b .newline
# Our patches
%patch100 -p1 -b .configure
@@ -379,6 +381,9 @@ fi
%{_sbindir}/chroot
%changelog
+* Thu Dec 20 2012 Ondrej Vasik