Author: Pádraig Brady <[email protected]>
Date:   Fri May 6 08:07:46 2011 +0100

    sort: fix a contradictory --debug warning

    * src/sort.c (key_warn): `sort -k2,1n --debug` would output
    warnings about being both "zero width" and "spanning multiple fields".
    Suppress the latter one.
    * tests/misc/sort-debug-warn: Add a couple of test cases.

diff --git a/src/sort.c b/src/sort.c
index 07d6765..e10159a 100644
--- a/src/sort.c
+++ b/src/sort.c
@@ -2385,7 +2385,7 @@ key_warnings (struct keyfield const *gkey, bool gkey_only)
           size_t eword = key->eword + 1;
           if (!sword)
             sword++;
-          if (sword != eword)
+          if (!eword || sword < eword)
             error (0, 0, _("key %lu is numeric and spans multiple fields"),
                    keynum);
         }
diff --git a/tests/misc/sort-debug-warn b/tests/misc/sort-debug-warn
index def2571..5ae0002 100755
--- a/tests/misc/sort-debug-warn
+++ b/tests/misc/sort-debug-warn
@@ -23,6 +23,10 @@ cat <<\EOF > exp
 sort: using simple byte comparison
 sort: key 1 has zero width and will be ignored
 sort: using simple byte comparison
+sort: key 1 has zero width and will be ignored
+sort: using simple byte comparison
+sort: key 1 is numeric and spans multiple fields
+sort: using simple byte comparison
 sort: options `-bghMRrV' are ignored
 sort: using simple byte comparison
 sort: options `-bghMRV' are ignored
@@ -50,6 +54,8 @@ sort: using simple byte comparison
 EOF

 sort -s -k2,1 --debug /dev/null 2>>out
+sort -s -k2,1n --debug /dev/null 2>>out
+sort -s -k1,2n --debug /dev/null 2>>out
 sort -s -rRVMhgb -k1,1n --debug /dev/null 2>>out
 sort -rRVMhgb -k1,1n --debug /dev/null 2>>out
 sort -r -k1,1n --debug /dev/null 2>>out

Reply via email to