source: trunk/src/sed/testsuite/recursive-escape-c.sh

Last change on this file was 3613, checked in by bird, 10 months ago

src/sed: Merged in changes between 4.1.5 and 4.9 from the vendor branch. (svn merge /vendor/sed/4.1.5 /vendor/sed/current .)

File size: 1.9 KB
RevLine 
[3611]1#!/bin/sh
2# test \c escaping
3
4# Copyright (C) 2016-2022 Free Software Foundation, Inc.
5
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.
10
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.
15
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/>.
18. "${srcdir=.}/testsuite/init.sh"; path_prepend_ ./sed
19print_ver_ sed
20
21unset POSIXLY_CORRECT
22export LC_ALL=C
23
24# input file, any 6 lines would do, each a different test case
25printf "%s\n" a a a a a a >in1 || framework_failure_
26
27# input program
28cat << \EOF > prog1 || framework_failure_
291s/./\cA/
302s/./\cB/
313s/./\c[/
324s/./\c]/
33
34# '\c' at end-of-buffer, a backslash is pushed up
35# on level of interpretation, and the '.' match is replaced
36# with one backslash.
375s/./\c/
38
39# This would return incorrect results before 4.3,
40# producing both \034 and another backslash.
416s/./\c\\/
42EOF
43
44# expected output:
45printf '\001\n\002\n\033\n\035\n\\\n\034\n' > exp1 || framework_failure_
46
47#
48# Run simple test cases
49#
50sed -f prog1 in1 > out1 || fail=1
51compare_ exp1 out1 || fail=1
52
53# for easier troubleshooting, if users ever report errors
54if test "$fail" -eq 1 ; then
55 od -tx1c prog1
56 od -tx1c exp1
57 od -tx1c out1
58fi
59
60#
61# Test invalid usage
62#
63cat << \EOF > exp-err || framework_failure_
64sed: -e expression #1, char 10: recursive escaping after \c not allowed
65EOF
66
67# Before sed-4.3, this resulted in '\034d'. Now, it is rejected.
68returns_ 1 sed '1s/./\c\d/' in1 2>err || fail=1
69compare_ exp-err err || fail=1
70
71Exit $fail
Note: See TracBrowser for help on using the repository browser.