commit 890f6c2c050149e63efe5b385b104c8383342973
Author:     Roberto E. Vargas Caballero <k...@shike2.com>
AuthorDate: Mon Nov 27 09:21:45 2023 +0100
Commit:     k0ga <Roberto E. Vargas Caballero k...@shike2.com>
CommitDate: Thu Dec 28 17:02:44 2023 +0100

    ed: Improve execsh

diff --git a/ed.c b/ed.c
index a5eea16..a8bc7d5 100644
--- a/ed.c
+++ b/ed.c
@@ -1067,13 +1067,21 @@ execsh(void)
        }
 
        while ((c = input()) != '\0') {
-               if (c == '%' && (cmd.siz == 0 || cmd.str[cmd.siz - 1] != '\\')) 
{
+               switch (c) {
+               case '%':
                        if (savfname[0] == '\0')
                                error("no current filename");
                        repl = 1;
                        for (p = savfname; *p; ++p)
                                addchar(*p, &cmd);
-               } else {
+                       break;
+               case '\\':
+                       c = input();
+                       if (c != '%') {
+                               back(c);
+                               c = '\\';
+                       }
+               default:
                        addchar(c, &cmd);
                }
        }

Reply via email to