---
ed.c | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/ed.c b/ed.c
index 97fa5e8..ca55c61 100644
--- a/ed.c
+++ b/ed.c
_AT_@ -61,9 +61,8 @@ static size_t sizetxt, memtxt;
static int scratch;
static int pflag, modflag, uflag, gflag;
static size_t csize;
-static char *cmdline;
+static String cmdline;
static char *ocmdline;
-static size_t cmdsiz, cmdcap;
static int repidx;
static char *rhs;
static char *lastmatch;
_AT_@ -76,12 +75,15 @@ 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 */;
- }
+ if (repidx >= 0)
+ return;
+
+ /* discard until the end of the line */
+ if (cmdline.siz > 0 && cmdline.str[cmdline.siz-1] == '\n')
+ return;
+
+ while ((c = getchar()) != '\n' && c != EOF)
+ ;
}
static void undo(void);
_AT_@ -158,7 +160,7 @@ input(void)
return ocmdline[repidx++];
if ((c = getchar()) != EOF)
- cmdline = addchar(c, cmdline, &cmdcap, &cmdsiz);
+ addchar_(c, &cmdline);
return c;
}
_AT_@ -170,7 +172,7 @@ back(int c)
} else {
ungetc(c, stdin);
if (c != EOF)
- --cmdsiz;
+ --cmdline.siz;
}
return c;
}
_AT_@ -1085,7 +1087,7 @@ repeat:
execsh();
break;
case EOF:
- if (cmdsiz == 0)
+ if (cmdline.siz == 0)
quit();
case '\n':
if (gflag && uflag)
_AT_@ -1281,8 +1283,8 @@ save_last_cmd:
if (rep)
return;
free(ocmdline);
- cmdline = addchar('\0', cmdline, &cmdcap, &cmdsiz);
- if ((ocmdline = strdup(cmdline)) == NULL)
+ addchar_('\0', &cmdline);
+ if ((ocmdline = strdup(cmdline.str)) == NULL)
error("out of memory");
}
_AT_@ -1332,7 +1334,7 @@ doglobal(void)
int i, k;
skipblank();
- cmdsiz = 0;
+ cmdline.siz = 0;
gflag = 1;
if (uflag)
chkprint(0);
_AT_@ -1394,7 +1396,7 @@ edit(void)
for (;;) {
newcmd = 1;
ocurln = curln;
- cmdsiz = 0;
+ cmdline.siz = 0;
repidx = -1;
if (optprompt) {
fputs(prompt, stdout);
--
2.14.2
Received on Tue Mar 06 2018 - 12:57:55 CET
This archive was generated by hypermail 2.3.0 : Tue Mar 06 2018 - 13:01:31 CET