split: diagnose when --filter is used with a chunk number
authorPádraig Brady <P@draigBrady.com>
Fri, 20 May 2011 00:18:28 +0000 (01:18 +0100)
committerPádraig Brady <P@draigBrady.com>
Wed, 25 May 2011 23:23:11 +0000 (00:23 +0100)
* src/split.c (main): Exit with a diagnostic if --filter
is specified along with a specific chunk number.
* test/split/filter: Ensure this combination fails.

src/split.c
tests/split/filter

index 5e203f1..9e23f86 100644 (file)
@@ -1175,6 +1175,12 @@ main (int argc, char **argv)
         }
     }
 
+  if (k_units != 0 && filter_command)
+    {
+      error (0, 0, _("--filter does not process a chunk extracted to stdout"));
+      usage (EXIT_FAILURE);
+    }
+
   /* Handle default case.  */
   if (split_type == type_undef)
     {
index a42c553..5bc5458 100755 (executable)
@@ -43,6 +43,9 @@ done
 split -e -n 10 --filter='xz > $FILE.xz' /dev/null || fail=1
 stat x?? 2>/dev/null && fail=1
 
+# Ensure this invalid combination is flagged
+split -n 1/2 --filter='true' /dev/null 2>/dev/null && fail=1
+
 # Ensure SIGPIPEs sent by the children don't propagate back
 # where they would result in a non zero exit from split.
 yes | head -n200K | split -b1G --filter='head -c1 >/dev/null' || fail=1