From: Assaf Gordon Date: Wed, 1 Jun 2016 00:19:38 +0000 (-0400) Subject: sort: modify 'leading spaces' debug warning scenarios X-Git-Tag: v8.26~104 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6223bf94bfeac75fb4252095864a80545ba00a0d;p=thirdparty%2Fcoreutils.git sort: modify 'leading spaces' debug warning scenarios Print warning regardless of locale, avoid warning if key is zero width. Problem reported by Karl Berry in http://bugs.gnu.org/23665 . * src/sort.c: (key_warnings): change conditions for 'leading spaces' warning. * tests/misc/sort-debug-warn.sh: adjust tests accordingly. --- diff --git a/src/sort.c b/src/sort.c index aa52b75690..f717604ca0 100644 --- a/src/sort.c +++ b/src/sort.c @@ -2424,16 +2424,15 @@ key_warnings (struct keyfield const *gkey, bool gkey_only) } /* Warn about field specs that will never match. */ - if (key->sword != SIZE_MAX && key->eword < key->sword) + bool zero_width = key->sword != SIZE_MAX && key->eword < key->sword; + if (zero_width) error (0, 0, _("key %lu has zero width and will be ignored"), keynum); /* Warn about significant leading blanks. */ bool implicit_skip = key_numeric (key) || key->month; - bool maybe_space_aligned = !hard_LC_COLLATE && default_key_compare (key) - && !(key->schar || key->echar); bool line_offset = key->eword == 0 && key->echar != 0; /* -k1.x,1.y */ - if (!gkey_only && tab == TAB_DEFAULT && !line_offset - && ((!key->skipsblanks && !(implicit_skip || maybe_space_aligned)) + if (!zero_width && !gkey_only && tab == TAB_DEFAULT && !line_offset + && ((!key->skipsblanks && !implicit_skip) || (!key->skipsblanks && key->schar) || (!key->skipeblanks && key->echar))) error (0, 0, _("leading blanks are significant in key %lu; " diff --git a/tests/misc/sort-debug-warn.sh b/tests/misc/sort-debug-warn.sh index b7ad449665..8dde2604f9 100755 --- a/tests/misc/sort-debug-warn.sh +++ b/tests/misc/sort-debug-warn.sh @@ -41,6 +41,7 @@ sort: using simple byte comparison sort: option '-r' only applies to last-resort comparison 7 sort: using simple byte comparison +sort: leading blanks are significant in key 2; consider also specifying 'b' sort: options '-bg' are ignored 8 sort: using simple byte comparison @@ -51,6 +52,7 @@ sort: option '-b' is ignored sort: using simple byte comparison 11 sort: using simple byte comparison +sort: leading blanks are significant in key 1; consider also specifying 'b' 12 sort: using simple byte comparison sort: leading blanks are significant in key 1; consider also specifying 'b' @@ -116,7 +118,6 @@ sort: using simple byte comparison sort: key 1 is numeric and spans multiple fields sort: obsolescent key '+2 -1' used; consider '-k 3,1' instead sort: key 2 has zero width and will be ignored -sort: leading blanks are significant in key 2; consider also specifying 'b' sort: option '-b' is ignored sort: option '-r' only applies to last-resort comparison EOF