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
This commit is contained in:
Glenn L McGrath 2003-09-14 08:52:53 +00:00
parent 3fe475677a
commit edc388cf4e

View File

@ -915,8 +915,7 @@ static void process_file(FILE * file)
} }
} }
#endif #endif
altered = substituted; if (!be_quiet && substituted && ((sed_cmd->next == NULL)
if (!be_quiet && altered && ((sed_cmd->next == NULL)
|| (sed_cmd->next->cmd != 's'))) { || (sed_cmd->next->cmd != 's'))) {
force_print = 1; 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 /* 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 * line was altered (via a 'd'elete or 's'ubstitution), in which case
* the altered line was already printed */ * the altered line was already printed */
if ((!be_quiet && !altered) || force_print) { if ((!be_quiet && !altered && !substituted) || force_print) {
puts(pattern_space); puts(pattern_space);
} }
free(pattern_space); free(pattern_space);