reverted an old change and constricted it's condition, turned off two multibyte tests (wrong strcoll return value)

This commit is contained in:
Ondrej Oprala 2014-01-02 21:29:20 +01:00
parent 83c13991c9
commit d6d7448c6a
2 changed files with 51 additions and 40 deletions

View File

@ -2412,7 +2412,7 @@ diff -urNp coreutils-8.22-orig/src/pr.c coreutils-8.22/src/pr.c
diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
--- coreutils-8.22-orig/src/sort.c 2013-12-04 15:48:30.000000000 +0100 --- coreutils-8.22-orig/src/sort.c 2013-12-04 15:48:30.000000000 +0100
+++ coreutils-8.22/src/sort.c 2013-12-16 17:40:25.949882582 +0100 +++ coreutils-8.22/src/sort.c 2014-01-02 21:17:32.802621367 +0100
@@ -29,6 +29,14 @@ @@ -29,6 +29,14 @@
#include <sys/wait.h> #include <sys/wait.h>
#include <signal.h> #include <signal.h>
@ -2428,8 +2428,13 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
#include "system.h" #include "system.h"
#include "argmatch.h" #include "argmatch.h"
#include "error.h" #include "error.h"
@@ -166,12 +174,34 @@ static int thousands_sep; @@ -164,14 +172,39 @@ static int decimal_point;
/* Thousands separator; if -1, then there isn't one. */
static int thousands_sep;
+/* True if -f is specified. */
+static bool folding;
+
/* Nonzero if the corresponding locales are hard. */ /* Nonzero if the corresponding locales are hard. */
static bool hard_LC_COLLATE; static bool hard_LC_COLLATE;
-#if HAVE_NL_LANGINFO -#if HAVE_NL_LANGINFO
@ -2464,7 +2469,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
/* The kind of blanks for '-b' to skip in various options. */ /* The kind of blanks for '-b' to skip in various options. */
enum blanktype { bl_start, bl_end, bl_both }; enum blanktype { bl_start, bl_end, bl_both };
@@ -345,13 +375,11 @@ static bool reverse; @@ -345,13 +378,11 @@ static bool reverse;
they were read if all keys compare equal. */ they were read if all keys compare equal. */
static bool stable; static bool stable;
@ -2481,7 +2486,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
/* Flag to remove consecutive duplicate lines from the output. /* Flag to remove consecutive duplicate lines from the output.
Only the last of a sequence of equal lines will be output. */ Only the last of a sequence of equal lines will be output. */
@@ -811,6 +839,46 @@ reap_all (void) @@ -811,6 +842,46 @@ reap_all (void)
reap (-1); reap (-1);
} }
@ -2528,7 +2533,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
/* Clean up any remaining temporary files. */ /* Clean up any remaining temporary files. */
static void static void
@@ -1255,7 +1323,7 @@ zaptemp (char const *name) @@ -1255,7 +1326,7 @@ zaptemp (char const *name)
free (node); free (node);
} }
@ -2537,7 +2542,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
static int static int
struct_month_cmp (void const *m1, void const *m2) struct_month_cmp (void const *m1, void const *m2)
@@ -1270,7 +1338,7 @@ struct_month_cmp (void const *m1, void c @@ -1270,7 +1341,7 @@ struct_month_cmp (void const *m1, void c
/* Initialize the character class tables. */ /* Initialize the character class tables. */
static void static void
@ -2546,7 +2551,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
{ {
size_t i; size_t i;
@@ -1282,7 +1350,7 @@ inittables (void) @@ -1282,7 +1353,7 @@ inittables (void)
fold_toupper[i] = toupper (i); fold_toupper[i] = toupper (i);
} }
@ -2555,7 +2560,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
/* If we're not in the "C" locale, read different names for months. */ /* If we're not in the "C" locale, read different names for months. */
if (hard_LC_TIME) if (hard_LC_TIME)
{ {
@@ -1364,6 +1432,84 @@ specify_nmerge (int oi, char c, char con @@ -1364,6 +1435,84 @@ specify_nmerge (int oi, char c, char con
xstrtol_fatal (e, oi, c, long_options, s); xstrtol_fatal (e, oi, c, long_options, s);
} }
@ -2640,7 +2645,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
/* Specify the amount of main memory to use when sorting. */ /* Specify the amount of main memory to use when sorting. */
static void static void
specify_sort_size (int oi, char c, char const *s) specify_sort_size (int oi, char c, char const *s)
@@ -1597,7 +1743,7 @@ buffer_linelim (struct buffer const *buf @@ -1597,7 +1746,7 @@ buffer_linelim (struct buffer const *buf
by KEY in LINE. */ by KEY in LINE. */
static char * static char *
@ -2649,7 +2654,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
{ {
char *ptr = line->text, *lim = ptr + line->length - 1; char *ptr = line->text, *lim = ptr + line->length - 1;
size_t sword = key->sword; size_t sword = key->sword;
@@ -1606,10 +1752,10 @@ begfield (struct line const *line, struc @@ -1606,10 +1755,10 @@ begfield (struct line const *line, struc
/* The leading field separator itself is included in a field when -t /* The leading field separator itself is included in a field when -t
is absent. */ is absent. */
@ -2662,7 +2667,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
++ptr; ++ptr;
if (ptr < lim) if (ptr < lim)
++ptr; ++ptr;
@@ -1635,11 +1781,70 @@ begfield (struct line const *line, struc @@ -1635,11 +1784,70 @@ begfield (struct line const *line, struc
return ptr; return ptr;
} }
@ -2734,7 +2739,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
{ {
char *ptr = line->text, *lim = ptr + line->length - 1; char *ptr = line->text, *lim = ptr + line->length - 1;
size_t eword = key->eword, echar = key->echar; size_t eword = key->eword, echar = key->echar;
@@ -1654,10 +1859,10 @@ limfield (struct line const *line, struc @@ -1654,10 +1862,10 @@ limfield (struct line const *line, struc
'beginning' is the first character following the delimiting TAB. 'beginning' is the first character following the delimiting TAB.
Otherwise, leave PTR pointing at the first 'blank' character after Otherwise, leave PTR pointing at the first 'blank' character after
the preceding field. */ the preceding field. */
@ -2747,7 +2752,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
++ptr; ++ptr;
if (ptr < lim && (eword || echar)) if (ptr < lim && (eword || echar))
++ptr; ++ptr;
@@ -1703,10 +1908,10 @@ limfield (struct line const *line, struc @@ -1703,10 +1911,10 @@ limfield (struct line const *line, struc
*/ */
/* Make LIM point to the end of (one byte past) the current field. */ /* Make LIM point to the end of (one byte past) the current field. */
@ -2760,7 +2765,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
if (newlim) if (newlim)
lim = newlim; lim = newlim;
} }
@@ -1737,6 +1942,130 @@ limfield (struct line const *line, struc @@ -1737,6 +1945,130 @@ limfield (struct line const *line, struc
return ptr; return ptr;
} }
@ -2891,7 +2896,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
/* Fill BUF reading from FP, moving buf->left bytes from the end /* Fill BUF reading from FP, moving buf->left bytes from the end
of buf->buf to the beginning first. If EOF is reached and the of buf->buf to the beginning first. If EOF is reached and the
file wasn't terminated by a newline, supply one. Set up BUF's line file wasn't terminated by a newline, supply one. Set up BUF's line
@@ -1823,8 +2152,22 @@ fillbuf (struct buffer *buf, FILE *fp, c @@ -1823,8 +2155,22 @@ fillbuf (struct buffer *buf, FILE *fp, c
else else
{ {
if (key->skipsblanks) if (key->skipsblanks)
@ -2916,7 +2921,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
line->keybeg = line_start; line->keybeg = line_start;
} }
} }
@@ -1945,7 +2288,7 @@ human_numcompare (char const *a, char co @@ -1945,7 +2291,7 @@ human_numcompare (char const *a, char co
hideously fast. */ hideously fast. */
static int static int
@ -2925,7 +2930,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
{ {
while (blanks[to_uchar (*a)]) while (blanks[to_uchar (*a)])
a++; a++;
@@ -1955,6 +2298,25 @@ numcompare (char const *a, char const *b @@ -1955,6 +2301,25 @@ numcompare (char const *a, char const *b
return strnumcmp (a, b, decimal_point, thousands_sep); return strnumcmp (a, b, decimal_point, thousands_sep);
} }
@ -2951,7 +2956,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
/* Work around a problem whereby the long double value returned by glibc's /* Work around a problem whereby the long double value returned by glibc's
strtold ("NaN", ...) contains uninitialized bits: clear all bytes of strtold ("NaN", ...) contains uninitialized bits: clear all bytes of
A and B before calling strtold. FIXME: remove this function once A and B before calling strtold. FIXME: remove this function once
@@ -2005,7 +2367,7 @@ general_numcompare (char const *sa, char @@ -2005,7 +2370,7 @@ general_numcompare (char const *sa, char
Return 0 if the name in S is not recognized. */ Return 0 if the name in S is not recognized. */
static int static int
@ -2960,7 +2965,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
{ {
size_t lo = 0; size_t lo = 0;
size_t hi = MONTHS_PER_YEAR; size_t hi = MONTHS_PER_YEAR;
@@ -2280,15 +2642,14 @@ debug_key (struct line const *line, stru @@ -2280,15 +2645,14 @@ debug_key (struct line const *line, stru
char saved = *lim; char saved = *lim;
*lim = '\0'; *lim = '\0';
@ -2978,7 +2983,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
else if (key->general_numeric) else if (key->general_numeric)
ignore_value (strtold (beg, &tighter_lim)); ignore_value (strtold (beg, &tighter_lim));
else if (key->numeric || key->human_numeric) else if (key->numeric || key->human_numeric)
@@ -2432,7 +2793,7 @@ key_warnings (struct keyfield const *gke @@ -2432,7 +2796,7 @@ key_warnings (struct keyfield const *gke
bool maybe_space_aligned = !hard_LC_COLLATE && default_key_compare (key) bool maybe_space_aligned = !hard_LC_COLLATE && default_key_compare (key)
&& !(key->schar || key->echar); && !(key->schar || key->echar);
bool line_offset = key->eword == 0 && key->echar != 0; /* -k1.x,1.y */ bool line_offset = key->eword == 0 && key->echar != 0; /* -k1.x,1.y */
@ -2987,7 +2992,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
&& ((!key->skipsblanks && !(implicit_skip || maybe_space_aligned)) && ((!key->skipsblanks && !(implicit_skip || maybe_space_aligned))
|| (!key->skipsblanks && key->schar) || (!key->skipsblanks && key->schar)
|| (!key->skipeblanks && key->echar))) || (!key->skipeblanks && key->echar)))
@@ -2490,11 +2851,87 @@ key_warnings (struct keyfield const *gke @@ -2490,11 +2854,87 @@ key_warnings (struct keyfield const *gke
error (0, 0, _("option '-r' only applies to last-resort comparison")); error (0, 0, _("option '-r' only applies to last-resort comparison"));
} }
@ -3076,7 +3081,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
{ {
struct keyfield *key = keylist; struct keyfield *key = keylist;
@@ -2579,7 +3016,7 @@ keycompare (struct line const *a, struct @@ -2579,7 +3019,7 @@ keycompare (struct line const *a, struct
else if (key->human_numeric) else if (key->human_numeric)
diff = human_numcompare (ta, tb); diff = human_numcompare (ta, tb);
else if (key->month) else if (key->month)
@ -3085,7 +3090,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
else if (key->random) else if (key->random)
diff = compare_random (ta, tlena, tb, tlenb); diff = compare_random (ta, tlena, tb, tlenb);
else if (key->version) else if (key->version)
@@ -2695,6 +3132,191 @@ keycompare (struct line const *a, struct @@ -2695,6 +3135,191 @@ keycompare (struct line const *a, struct
return key->reverse ? -diff : diff; return key->reverse ? -diff : diff;
} }
@ -3277,22 +3282,24 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
/* Compare two lines A and B, returning negative, zero, or positive /* Compare two lines A and B, returning negative, zero, or positive
depending on whether A compares less than, equal to, or greater than B. */ depending on whether A compares less than, equal to, or greater than B. */
@@ -2722,14 +3344,6 @@ compare (struct line const *a, struct li @@ -2722,7 +3347,7 @@ compare (struct line const *a, struct li
diff = - NONZERO (blen); diff = - NONZERO (blen);
else if (blen == 0) else if (blen == 0)
diff = 1; diff = 1;
- else if (hard_LC_COLLATE) - else if (hard_LC_COLLATE)
- { + else if (hard_LC_COLLATE && !folding)
- /* Note xmemcoll0 is a performance enhancement as {
- it will not unconditionally write '\0' after the /* Note xmemcoll0 is a performance enhancement as
- passed in buffers, which was seen to give around it will not unconditionally write '\0' after the
- a 3% increase in performance for short lines. */ @@ -4113,6 +4738,7 @@ set_ordering (char const *s, struct keyf
- diff = xmemcoll0 (a->text, alen + 1, b->text, blen + 1); break;
- } case 'f':
else if (! (diff = memcmp (a->text, b->text, MIN (alen, blen)))) key->translate = fold_toupper;
diff = alen < blen ? -1 : alen != blen; + folding = true;
break;
@@ -4190,7 +4804,7 @@ main (int argc, char **argv) case 'g':
key->general_numeric = true;
@@ -4190,7 +4816,7 @@ main (int argc, char **argv)
initialize_exit_failure (SORT_FAILURE); initialize_exit_failure (SORT_FAILURE);
hard_LC_COLLATE = hard_locale (LC_COLLATE); hard_LC_COLLATE = hard_locale (LC_COLLATE);
@ -3301,7 +3308,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
hard_LC_TIME = hard_locale (LC_TIME); hard_LC_TIME = hard_locale (LC_TIME);
#endif #endif
@@ -4211,6 +4825,29 @@ main (int argc, char **argv) @@ -4211,6 +4837,29 @@ main (int argc, char **argv)
thousands_sep = -1; thousands_sep = -1;
} }
@ -3331,7 +3338,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
have_read_stdin = false; have_read_stdin = false;
inittables (); inittables ();
@@ -4485,13 +5122,34 @@ main (int argc, char **argv) @@ -4485,13 +5134,34 @@ main (int argc, char **argv)
case 't': case 't':
{ {
@ -3370,7 +3377,7 @@ diff -urNp coreutils-8.22-orig/src/sort.c coreutils-8.22/src/sort.c
else else
{ {
/* Provoke with 'sort -txx'. Complain about /* Provoke with 'sort -txx'. Complain about
@@ -4502,9 +5160,12 @@ main (int argc, char **argv) @@ -4502,9 +5172,12 @@ main (int argc, char **argv)
quote (optarg)); quote (optarg));
} }
} }
@ -4442,7 +4449,7 @@ diff -urNp coreutils-8.22-orig/tests/misc/sort.pl coreutils-8.22/tests/misc/sort
+ } + }
+ #disable several failing tests until investigation, disable all tests with envvars set + #disable several failing tests until investigation, disable all tests with envvars set
+ next if (grep {ref $_ eq 'HASH' && exists $_->{ENV}} (@new_t)); + next if (grep {ref $_ eq 'HASH' && exists $_->{ENV}} (@new_t));
+ next if ($test_name =~ "18g" or $test_name =~ "sort-numeric" or $test_name =~ "08[ab]" or $test_name =~ "03[def]" or $test_name =~ "h4" or $test_name =~ "n1"); + next if ($test_name =~ "18g" or $test_name =~ "sort-numeric" or $test_name =~ "08[ab]" or $test_name =~ "03[def]" or $test_name =~ "h4" or $test_name =~ "n1" or $test_name =~ "2[01]a");
+ push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}]; + push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
+ } + }
+ push @Tests, @new; + push @Tests, @new;

View File

@ -1,7 +1,7 @@
Summary: A set of basic GNU tools commonly used in shell scripts Summary: A set of basic GNU tools commonly used in shell scripts
Name: coreutils Name: coreutils
Version: 8.22 Version: 8.22
Release: 4%{?dist} Release: 5%{?dist}
License: GPLv3+ License: GPLv3+
Group: System Environment/Base Group: System Environment/Base
Url: http://www.gnu.org/software/coreutils/ Url: http://www.gnu.org/software/coreutils/
@ -372,6 +372,10 @@ fi
%{_sbindir}/chroot %{_sbindir}/chroot
%changelog %changelog
* Thu Jan 02 2014 Ondrej Oprala <ooprala@redhat.com> 8.22-5
- reverted an old change and constricted it's condition
- turned off two multibyte tests (wrong strcoll return value)
* Mon Dec 23 2013 Ondrej Vasik <ovasik@redhat.com> 8.22-4 * Mon Dec 23 2013 Ondrej Vasik <ovasik@redhat.com> 8.22-4
- skip even the ls aliases in noninteractive mode - skip even the ls aliases in noninteractive mode
(suggested by T. Cordes, #988152) (suggested by T. Cordes, #988152)