From edc388cf4ef381282d13e2873694e3c9032214e4 Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Sun, 14 Sep 2003 08:52:53 +0000 Subject: The previous fix for 's/a/1/;s/b/2/;t one;p;:one;p' broke the case of echo fooba | ./busybox sed -n 's/foo//;s/bar/found/p' I really need to start adding these tests to the testsuite. keep the substituted and altered flags seperate --- editors/sed.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'editors/sed.c') diff --git a/editors/sed.c b/editors/sed.c index 2be4ed174..63d5581f0 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -915,8 +915,7 @@ static void process_file(FILE * file) } } #endif - altered = substituted; - if (!be_quiet && altered && ((sed_cmd->next == NULL) + if (!be_quiet && substituted && ((sed_cmd->next == NULL) || (sed_cmd->next->cmd != 's'))) { force_print = 1; } @@ -1105,7 +1104,7 @@ static void process_file(FILE * file) /* we will print the line unless we were told to be quiet or if the * line was altered (via a 'd'elete or 's'ubstitution), in which case * the altered line was already printed */ - if ((!be_quiet && !altered) || force_print) { + if ((!be_quiet && !altered && !substituted) || force_print) { puts(pattern_space); } free(pattern_space); -- cgit v1.2.3