summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2013-07-21 20:09:44 (GMT)
committer Denys Vlasenko <vda.linux@googlemail.com>2013-07-21 20:09:44 (GMT)
commitb0e9b72915a87121aabf21d4e382e16e0a9a5175 (patch)
treef260550026cd79fa5ac59ebe0fa7ff769f0a6d94
parent26cd90c7fd32f2ef252acb146f8b9152e55346ec (diff)
downloadbusybox-b0e9b72915a87121aabf21d4e382e16e0a9a5175.tar.gz
busybox-b0e9b72915a87121aabf21d4e382e16e0a9a5175.tar.bz2
sed: fix matching of newlines by $
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--editors/sed.c2
-rwxr-xr-xtestsuite/sed.tests21
2 files changed, 22 insertions, 1 deletions
diff --git a/editors/sed.c b/editors/sed.c
index e625a09..3a0d917 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -330,7 +330,7 @@ static int get_address(const char *my_str, int *linenum, regex_t ** regex)
next = index_of_next_unescaped_regexp_delim(delimiter, ++pos);
temp = copy_parsing_escapes(pos, next);
*regex = xzalloc(sizeof(regex_t));
- xregcomp(*regex, temp, G.regex_type|REG_NEWLINE);
+ xregcomp(*regex, temp, G.regex_type);
free(temp);
/* Move position to next character after last delimiter */
pos += (next+1);
diff --git a/testsuite/sed.tests b/testsuite/sed.tests
index 468565f..2af1e4c 100755
--- a/testsuite/sed.tests
+++ b/testsuite/sed.tests
@@ -310,6 +310,27 @@ testing "sed zero chars match/replace logic must not falsely trigger here 2" \
"sed 's/ *$/_/g'" \
"qwerty_\n" "" "qwerty\n"
+testing "sed /\$_in_regex/ should not match newlines, only end-of-line" \
+ "sed ': testcont; /\\\\$/{ =; N; b testcont }'" \
+ "\
+this is a regular line
+2
+line with \\
+continuation
+more regular lines
+5
+line with \\
+continuation
+" \
+ "" "\
+this is a regular line
+line with \\
+continuation
+more regular lines
+line with \\
+continuation
+"
+
# testing "description" "commands" "result" "infile" "stdin"
exit $FAILCOUNT