diff options
author | Glenn L McGrath | 2003-03-28 07:44:03 +0000 |
---|---|---|
committer | Glenn L McGrath | 2003-03-28 07:44:03 +0000 |
commit | ccd43a83014d77cda09b5af82de9996bcd1fa333 (patch) | |
tree | 0325e4d2e84e30f176d302e619f87d5f559eadb0 | |
parent | b08e3e8c2e1334ba00df7d818b586815b328a4b0 (diff) | |
download | busybox-ccd43a83014d77cda09b5af82de9996bcd1fa333.zip busybox-ccd43a83014d77cda09b5af82de9996bcd1fa333.tar.gz |
Fix sed 's' command's 'p' flag, so it can print line twice
-rw-r--r-- | editors/sed.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/editors/sed.c b/editors/sed.c index 78d4609..d14b6f7 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -792,25 +792,23 @@ static void process_file(FILE *file) * flag exists in the first place. */ - /* if the user specified that they didn't want anything printed (i.e., a -n - * flag and no 'p' flag after the s///), then there's really no point doing - * anything here. */ - if (be_quiet && !sed_cmd->sub_p) - break; - /* we print the line once, unless we were told to be quiet */ - if (!be_quiet) + if (!be_quiet) { altered |= do_subst_command(sed_cmd, &line); + if (altered && ((sed_cmd->linear == NULL) || (sed_cmd->linear->cmd != 's'))) { + puts(line); + } + } /* we also print the line if we were given the 'p' flag * (this is quite possibly the second printing) */ - if (sed_cmd->sub_p) + if (sed_cmd->sub_p) { altered |= do_subst_command(sed_cmd, &line); - if (altered && ((sed_cmd->linear == NULL) || (sed_cmd->linear->cmd != 's'))) - puts(line); - + if (altered) { + puts(line); + } + } break; - case 'a': puts(line); fputs(sed_cmd->editline, stdout); |