sed: slightly better fix for prev commit's problem

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2012-04-24 19:27:34 +02:00
parent e39afe1fbd
commit b84dafb5e5

View File

@ -741,9 +741,9 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
* The match_count check is so not to break * The match_count check is so not to break
* echo "hi" | busybox sed 's/^/!/g' * echo "hi" | busybox sed 's/^/!/g'
*/ */
if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count && *line) { if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count) {
pipe_putc(*line++); pipe_putc(*line++);
continue; goto next;
} }
match_count++; match_count++;
@ -755,7 +755,7 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
) { ) {
for (i = 0; i < G.regmatch[0].rm_eo; i++) for (i = 0; i < G.regmatch[0].rm_eo; i++)
pipe_putc(*line++); pipe_putc(*line++);
continue; goto next;
} }
/* print everything before the match */ /* print everything before the match */
@ -773,7 +773,7 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
/* if we're not doing this globally, get out now */ /* if we're not doing this globally, get out now */
if (sed_cmd->which_match != 0) if (sed_cmd->which_match != 0)
break; break;
next:
if (*line == '\0') if (*line == '\0')
break; break;