diff options
author | Eric Andersen | 2003-12-23 08:53:51 +0000 |
---|---|---|
committer | Eric Andersen | 2003-12-23 08:53:51 +0000 |
commit | 52a3c2726ef9dc2c350fe761e41bf8e02444392e (patch) | |
tree | 2489e09309a1428000062965b31e4d62d406ee18 | |
parent | b89fcd44308b7551ca239c31fe26df725377f75f (diff) | |
download | busybox-52a3c2726ef9dc2c350fe761e41bf8e02444392e.zip busybox-52a3c2726ef9dc2c350fe761e41bf8e02444392e.tar.gz |
Patch from Matt Kraai:
sed is broken:
busybox sed -n '/^a/,/^a/p' >output <<EOF
a
b
a
b
EOF
cmp -s output - <<EOF
a
b
a
EOF
The attached patch fixes it.
-rw-r--r-- | editors/sed.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/editors/sed.c b/editors/sed.c index 4552af6..5f58fe2 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -746,7 +746,9 @@ static void process_file(FILE * file) restart: /* for every line, go through all the commands */ for (sed_cmd = sed_cmd_head.next; sed_cmd; sed_cmd = sed_cmd->next) { - int matched; + int old_matched, matched; + + old_matched = sed_cmd->in_match; /* Determine if this command matches this line: */ @@ -783,7 +785,7 @@ restart: : sed_cmd->end_line<=linenum : !sed_cmd->end_match) /* or does this line matches our last address regex */ - || (sed_cmd->end_match && (regexec(sed_cmd->end_match, pattern_space, 0, NULL, 0) == 0)) + || (sed_cmd->end_match && old_matched && (regexec(sed_cmd->end_match, pattern_space, 0, NULL, 0) == 0)) ); } |