sed: remove now-redundant backslash-newline handling
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 8 Jul 2013 00:04:44 +0000 (02:04 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 8 Jul 2013 00:07:16 +0000 (02:07 +0200)
4b0bb9e0fd9ec06e9e61b1a1527ace99ea9fe571 added this code in 2007,
then in a2215b98f7d65bc613b9c8f008d79672402c6a07 more general fix
was added.

function                                             old     new   delta
add_cmd_block                                         98      58     -40

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
editors/sed.c

index f90bc54..e625a09 100644 (file)
@@ -1377,7 +1377,7 @@ static void process_files(void)
 /* It is possible to have a command line argument with embedded
  * newlines.  This counts as multiple command lines.
  * However, newline can be escaped: 's/e/z\<newline>z/'
- * We check for this.
+ * add_cmd() handles this.
  */
 
 static void add_cmd_block(char *cmdstr)
@@ -1387,22 +1387,8 @@ static void add_cmd_block(char *cmdstr)
        cmdstr = sv = xstrdup(cmdstr);
        do {
                eol = strchr(cmdstr, '\n');
- next:
-               if (eol) {
-                       /* Count preceding slashes */
-                       int slashes = 0;
-                       char *sl = eol;
-
-                       while (sl != cmdstr && *--sl == '\\')
-                               slashes++;
-                       /* Odd number of preceding slashes - newline is escaped */
-                       if (slashes & 1) {
-                               overlapping_strcpy(eol - 1, eol);
-                               eol = strchr(eol, '\n');
-                               goto next;
-                       }
+               if (eol)
                        *eol = '\0';
-               }
                add_cmd(cmdstr);
                cmdstr = eol + 1;
        } while (eol);