[hackers] [sbase] Discard input at the end of global commands || Roberto E. Vargas Caballero
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