csplit(1): Fix extraneous output in edge case
authormillert <millert@openbsd.org>
Thu, 8 Jul 2021 00:38:42 +0000 (00:38 +0000)
committermillert <millert@openbsd.org>
Thu, 8 Jul 2021 00:38:42 +0000 (00:38 +0000)
When the input to csplit contains fewer lines than the number of matches
specified, extra output was mistakenly included in some output files.
From FreeBSD via Tim Chase.

usr.bin/csplit/csplit.c

index e32c044..45b0e77 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: csplit.c,v 1.9 2016/10/28 07:22:59 schwarze Exp $     */
+/*     $OpenBSD: csplit.c,v 1.10 2021/07/08 00:38:42 millert Exp $     */
 /*     $FreeBSD: src/usr.bin/csplit/csplit.c,v 1.9 2004/03/22 11:15:03 tjr Exp $       */
 
 /*-
@@ -398,8 +398,10 @@ do_rexp(const char *expr)
                first = 0;
        }
 
-       if (p == NULL)
+       if (p == NULL) {
+               toomuch(NULL, 0);
                errx(1, "%s: no match", re);
+       }
 
        if (ofs <= 0) {
                /*