seq: fix newline output when -s specified (upstream)
This commit is contained in:
parent
c767e7c27a
commit
11aeb4e734
113
coreutils-8.20-seq-s.patch
Normal file
113
coreutils-8.20-seq-s.patch
Normal file
@ -0,0 +1,113 @@
|
||||
From 9d9cdfd5df898ade2e680aab5ce37fcd0032c687 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
|
||||
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
|
@ -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 <ovasik@redhat.com> 8.20-5
|
||||
- seq: fix newline output when -s specified (upstream)
|
||||
|
||||
* Mon Dec 10 2012 Ondrej Vasik <ovasik@redhat.com> 8.20-4
|
||||
- fix showing duplicates in df (#709351, O.Oprala, B.Voelker)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user