diff options
author | Dominique Martinet | 2021-12-21 21:52:29 +0900 |
---|---|---|
committer | Denys Vlasenko | 2021-12-25 04:20:28 +0100 |
commit | 4fe954c14851d2f913c41c581cbe49300b0984e4 (patch) | |
tree | fc3efe9f530d28ba4ab7092a9d966c192ac49e59 /testsuite | |
parent | a05a3d5932b5002d0513adfa817b931dcc1686c0 (diff) | |
download | busybox-4fe954c14851d2f913c41c581cbe49300b0984e4.zip busybox-4fe954c14851d2f913c41c581cbe49300b0984e4.tar.gz |
sed: do not ignore 'g' modifier when match starts with ^
It is perfectly valid to start a regex with ^ and have other patterns
with \| that can match more than once, e.g. the following example
should print ca, as illustrated with gnu sed:
$ echo 'abca' | sed -e 's/^a\|b//g'
ca
busybox before patch:
$ echo 'abca' | busybox sed -e 's/^a\|b//g'
bca
busybox after patch:
$ echo 'abca' | ./busybox sed -e 's/^a\|b//g'
ca
regcomp handles ^ perfectly well as illustrated with the second 'a' that
did not match in the example, we ca leave the non-repeating to it if
appropriate.
The check had been added before using regcomp and was required at the
time (f36635cec6da) but no longer makes sense now.
(tested with glibc and musl libc)
function old new delta
add_cmd 1189 1176 -13
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'testsuite')
-rwxr-xr-x | testsuite/sed.tests | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/testsuite/sed.tests b/testsuite/sed.tests index 67ff87e..2b78c9b 100755 --- a/testsuite/sed.tests +++ b/testsuite/sed.tests @@ -399,6 +399,12 @@ testing "sed uses previous regexp" \ "" \ "q\nw\ne\nr\n" +testing "sed ^ OR not^" \ + "sed -e 's/^a\|b//g'" \ + "ca\n" \ + "" \ + "abca\n" + # testing "description" "commands" "result" "infile" "stdin" exit $FAILCOUNT |