|
|
|
@ -85,10 +85,8 @@ static int numeofs = 0; |
|
|
|
} |
|
|
|
|
|
|
|
#define newword \ |
|
|
|
if (delayed) append; \ |
|
|
|
delayed = 0; \ |
|
|
|
append; \ |
|
|
|
cw->wl_word = copy(buf); \ |
|
|
|
delayed = 1; \ |
|
|
|
bzero(buf, NEW_BSIZE_SP); \ |
|
|
|
i = 0; |
|
|
|
|
|
|
|
@ -121,7 +119,6 @@ cp_lexer(char *string) |
|
|
|
wordlist *wlist = NULL, *cw = NULL; |
|
|
|
char buf[NEW_BSIZE_SP], linebuf[NEW_BSIZE_SP]; |
|
|
|
int paren; |
|
|
|
int delayed; |
|
|
|
|
|
|
|
if (cp_inp_cur == NULL) |
|
|
|
cp_inp_cur = cp_in; |
|
|
|
@ -137,7 +134,6 @@ nloop: |
|
|
|
paren = 0; |
|
|
|
bzero(linebuf, NEW_BSIZE_SP); |
|
|
|
bzero(buf, NEW_BSIZE_SP); |
|
|
|
delayed = 1; |
|
|
|
for (;;) { |
|
|
|
if (string) { |
|
|
|
c = *string++; |
|
|
|
@ -175,7 +171,7 @@ gotchar: |
|
|
|
if ((c == EOF) && cp_bqflag) |
|
|
|
c = '\n'; |
|
|
|
if ((c == cp_hash) && !cp_interactive && (j == 1)) { |
|
|
|
if (delayed) append; |
|
|
|
append; |
|
|
|
if (string) |
|
|
|
return (NULL); |
|
|
|
while (((c = input(cp_inp_cur)) != '\n') && (c != EOF)) |
|
|
|
@ -202,7 +198,7 @@ gotchar: |
|
|
|
buf[i] = '\0'; |
|
|
|
newword; |
|
|
|
} |
|
|
|
if (delayed) append; |
|
|
|
append; |
|
|
|
if (cw->wl_prev) { |
|
|
|
cw->wl_prev->wl_next = NULL; |
|
|
|
tfree(cw); |
|
|
|
@ -250,7 +246,7 @@ gotchar: |
|
|
|
|
|
|
|
case '\004': |
|
|
|
case EOF: |
|
|
|
if (delayed) append; |
|
|
|
append; |
|
|
|
if (cp_interactive && !cp_nocc && |
|
|
|
(string == NULL)) { |
|
|
|
if (j == 0) { |
|
|
|
@ -297,7 +293,7 @@ gotchar: |
|
|
|
#else |
|
|
|
fputc(linebuf[j], cp_out); /* But you can't edit */ |
|
|
|
#endif |
|
|
|
if (delayed) append; |
|
|
|
append; |
|
|
|
// cp_ccom doesn't mess wlist, read only access to wlist->wl_word |
|
|
|
cp_ccom(wlist, buf, TRUE); |
|
|
|
wl_free(wlist); |
|
|
|
|