aboutsummaryrefslogtreecommitdiffstats
path: root/main/busybox/busybox-sed-3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/busybox/busybox-sed-3.patch')
-rw-r--r--main/busybox/busybox-sed-3.patch120
1 files changed, 0 insertions, 120 deletions
diff --git a/main/busybox/busybox-sed-3.patch b/main/busybox/busybox-sed-3.patch
deleted file mode 100644
index f916ce2911..0000000000
--- a/main/busybox/busybox-sed-3.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-diff -d -urpN busybox.2/editors/sed.c busybox.3/editors/sed.c
---- busybox.2/editors/sed.c 2009-08-08 01:40:42.000000000 +0200
-+++ busybox.3/editors/sed.c 2009-08-17 01:32:00.000000000 +0200
-@@ -589,7 +589,7 @@ static void pipe_putc(char c)
-
- static void do_subst_w_backrefs(char *line, char *replace)
- {
-- int i,j;
-+ int i, j;
-
- /* go through the replacement string */
- for (i = 0; replace[i]; i++) {
-@@ -624,23 +624,24 @@ static void do_subst_w_backrefs(char *li
- }
- }
-
--static int do_subst_command(sed_cmd_t *sed_cmd, char **line)
-+static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
- {
-- char *oldline = *line;
-+ char *line = *line_p;
- int altered = 0;
- unsigned match_count = 0;
- regex_t *current_regex;
-
-+ current_regex = sed_cmd->sub_match;
- /* Handle empty regex. */
-- if (sed_cmd->sub_match == NULL) {
-+ if (!current_regex) {
- current_regex = G.previous_regex_ptr;
- if (!current_regex)
- bb_error_msg_and_die("no previous regexp");
-- } else
-- G.previous_regex_ptr = current_regex = sed_cmd->sub_match;
-+ }
-+ G.previous_regex_ptr = current_regex;
-
- /* Find the first match */
-- if (REG_NOMATCH == regexec(current_regex, oldline, 10, G.regmatch, 0))
-+ if (REG_NOMATCH == regexec(current_regex, line, 10, G.regmatch, 0))
- return 0;
-
- /* Initialize temporary output buffer. */
-@@ -657,7 +658,7 @@ static int do_subst_command(sed_cmd_t *s
- The match_count check is so not to break
- echo "hi" | busybox sed 's/^/!/g' */
- if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count) {
-- pipe_putc(*oldline++);
-+ pipe_putc(*line++);
- continue;
- }
-
-@@ -669,35 +670,41 @@ static int do_subst_command(sed_cmd_t *s
- && (sed_cmd->which_match != match_count)
- ) {
- for (i = 0; i < G.regmatch[0].rm_eo; i++)
-- pipe_putc(*oldline++);
-+ pipe_putc(*line++);
- continue;
- }
-
- /* print everything before the match */
- for (i = 0; i < G.regmatch[0].rm_so; i++)
-- pipe_putc(oldline[i]);
-+ pipe_putc(line[i]);
-
- /* then print the substitution string */
-- do_subst_w_backrefs(oldline, sed_cmd->string);
-+ do_subst_w_backrefs(line, sed_cmd->string);
-
- /* advance past the match */
-- oldline += G.regmatch[0].rm_eo;
-+ line += G.regmatch[0].rm_eo;
- /* flag that something has changed */
- altered++;
-
- /* if we're not doing this globally, get out now */
- if (sed_cmd->which_match)
- break;
-- } while (*oldline && (regexec(current_regex, oldline, 10, G.regmatch, 0) != REG_NOMATCH));
-
-- /* Copy rest of string into output pipeline */
-+ if (*line == '\0')
-+ break;
-+//maybe (G.regmatch[0].rm_eo ? REG_NOTBOL : 0) instead of unconditional REG_NOTBOL?
-+ } while (regexec(current_regex, line, 10, G.regmatch, REG_NOTBOL) != REG_NOMATCH);
-
-- while (*oldline)
-- pipe_putc(*oldline++);
-- pipe_putc(0);
-+ /* Copy rest of string into output pipeline */
-+ while (1) {
-+ char c = *line++;
-+ pipe_putc(c);
-+ if (c == '\0')
-+ break;
-+ }
-
-- free(*line);
-- *line = G.pipeline.buf;
-+ free(*line_p);
-+ *line_p = G.pipeline.buf;
- return altered;
- }
-
-diff -d -urpN busybox.2/testsuite/sed.tests busybox.3/testsuite/sed.tests
---- busybox.2/testsuite/sed.tests 2009-08-08 01:40:44.000000000 +0200
-+++ busybox.3/testsuite/sed.tests 2009-08-17 01:29:01.000000000 +0200
-@@ -241,4 +241,11 @@ testing "sed 2d;2,1p (gnu compat)" \
- "third\n" "" \
- "first\nsecond\nthird\nfourth\n"
-
-+# Regex means: "match / at BOL or nothing, then one or more not-slashes".
-+# The bug was that second slash in /usr/lib was treated as "at BOL" too.
-+testing "sed beginning (^) matches only once" \
-+ "sed 's,\(^/\|\)[^/][^/]*,>\0<,g'" \
-+ ">/usr</>lib<\n" "" \
-+ "/usr/lib\n"
-+
- exit $FAILCOUNT