4 # Copyright (C) 2001-2024 Free Software Foundation, Inc.
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <https://www.gnu.org/licenses/>.
19 .
"${srcdir=.}/tests/init.sh"; path_prepend_ .
/src
23 # csplit could get a failed assertion to 2.0.17
24 (echo a
; echo; echo) > in
25 csplit
in '/^$/' 2 > out || fail
=1
31 compare exp out || fail
=1
34 # Ensure that xx02 contains just two newlines.
35 # This would fail due to reading from freed buffer with coreutils-5.0.91.
38 compare exp out || fail
=1
41 # csplit would infloop
43 csplit
in '/a/-1' '{*}' > out || fail
=1
48 compare exp out || fail
=1
51 # 'echo |csplit - 1 1' used to abort.
53 csplit
in 1 1 > out
2> err || fail
=1
59 compare exp out || fail
=1
61 csplit
: warning
: line number
'1' is the same as preceding line number
63 compare experr err || fail
=1
64 rm -f in out exp err experr
66 # 'echo | csplit -b '%0#6.3x' - 1' incorrectly warned about the format
67 # up through coreutils 8.6.
69 csplit
-b '%0#6.3x' in 1 > out
2> err || fail
=1
74 compare exp out || fail
=1
76 compare experr err || fail
=1
77 compare
'xx 000' experr || fail
=1
78 compare
'xx 0x001' in || fail
=1
79 rm -f in out exp err experr xx
*
81 # make sure 'csplit FILE 0' fails.
83 csplit
in 0 > out
2> err
&& fail
=1
84 csplit
in 2 1 > out
2>> err
&& fail
=1
85 csplit
in 3 3 > out
2>> err
&& fail
=1
87 csplit
: 0: line number must be greater than zero
88 csplit
: line number
'1' is smaller than preceding line number
, 2
89 csplit
: warning
: line number
'3' is the same as preceding line number
90 csplit
: '3': line number out of range
92 compare experr err || fail
=1
94 # Ensure that lines longer than the initial buffer length don't cause
95 # trouble (e.g. reading from freed memory, resulting in corrupt output).
96 # This test failed at least in coreutils-5.2.1 and 5.3.0, and was fixed
98 rm -f in out exp err experr xx??
99 printf 'x%8199s\nx\n%8199s\nx\n' x x
> in
100 csplit
in '/x\{1\}/' '{*}' > /dev
/null || fail
=1
101 cat xx?? | compare
- in || fail
=1