[hackers] [sbase] Discard input at the end of global commands || Roberto E. Vargas Caballero

From: <git_AT_suckless.org>
Date: Wed, 16 Dec 2015 21:16:19 +0100 (CET)

commit a65e180e5e5eca77ca13de082f3e16c0402b18af
Author: Roberto E. Vargas Caballero <k0ga_AT_shike2.com>
AuthorDate: Wed Dec 16 19:39:21 2015 +0100
Commit: sin <sin_AT_2f30.org>
CommitDate: Wed Dec 16 20:16:12 2015 +0000

    Discard input at the end of global commands
    
    If there is no any match, then the rest of the line
    is not read, and it means that ed thins it is a new
    command.

diff --git a/ed.c b/ed.c
index bde2c55..9a80eb9 100644
--- a/ed.c
+++ b/ed.c
_AT_@ -65,28 +65,35 @@ static struct undo udata;
 static int newcmd;
 
 
-static void undo(void);
 
 static void
-error(char *msg)
+discard(void)
 {
         int c;
 
+ /* discard until end of line */
+ if (repidx < 0 &&
+ ((cmdsiz > 0 && cmdline[cmdsiz-1] != '\n') || cmdsiz == 0)) {
+ while ((c = getchar()) != '\n' && c != EOF)
+ /* nothing */;
+ }
+}
+
+static void undo(void);
+
+static void
+error(char *msg)
+{
         exstatus = 1;
         lasterr = msg;
         fputs("?\n", stderr);
 
         if (optverbose)
                 fprintf(stderr, "%s\n", msg);
-
- /* discard until end of line */
- if (repidx < 0 && cmdsiz > 0 && cmdline[cmdsiz-1] != '\n') {
- while ((c = getchar()) != '\n' && c != EOF)
- /* nothing */;
- }
-
         if (!newcmd)
                 undo();
+
+ discard();
         curln = ocurln;
         longjmp(savesp, 1);
 }
_AT_@ -1293,6 +1300,7 @@ doglobal(void)
                 }
                 docmd();
         }
+ discard(); /* cover the case of not matchingc anything */
 }
 
 static void
Received on Wed Dec 16 2015 - 21:16:19 CET

This archive was generated by hypermail 2.3.0 : Wed Dec 16 2015 - 21:24:13 CET