Backport sed 's/$/@/' bugfix, thanks to Matt Kraai
authorEric Andersen <andersen@codepoet.org>
Wed, 24 Oct 2001 00:22:11 +0000 (00:22 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 24 Oct 2001 00:22:11 +0000 (00:22 -0000)
busybox/editors/sed.c
busybox/sed.c

index 989df7cb4be609fa173e7e770db13bd26d8c7c25..709fb13a893d77fc6631b6c89871ef2acc857792 100644 (file)
@@ -589,8 +589,8 @@ static int do_subst_command(const struct sed_cmd *sed_cmd, char **line)
 
        /* and now, as long as we've got a line to try matching and if we can match
         * the search string, we make substitutions */
-       while (*hackline && (regexec(sed_cmd->sub_match, hackline,
-                                       sed_cmd->num_backrefs+1, regmatch, 0) == 0) ) {
+       while ((*hackline || !altered) && (regexec(sed_cmd->sub_match, hackline,
+                                       sed_cmd->num_backrefs+1, regmatch, 0) != REG_NOMATCH) ) {
                int i;
 
                /* print everything before the match */
index 989df7cb4be609fa173e7e770db13bd26d8c7c25..709fb13a893d77fc6631b6c89871ef2acc857792 100644 (file)
@@ -589,8 +589,8 @@ static int do_subst_command(const struct sed_cmd *sed_cmd, char **line)
 
        /* and now, as long as we've got a line to try matching and if we can match
         * the search string, we make substitutions */
-       while (*hackline && (regexec(sed_cmd->sub_match, hackline,
-                                       sed_cmd->num_backrefs+1, regmatch, 0) == 0) ) {
+       while ((*hackline || !altered) && (regexec(sed_cmd->sub_match, hackline,
+                                       sed_cmd->num_backrefs+1, regmatch, 0) != REG_NOMATCH) ) {
                int i;
 
                /* print everything before the match */