--- ray/src/rt/editline.c 1990/01/08 13:53:55 1.3 +++ ray/src/rt/editline.c 1995/09/29 20:49:37 2.3 @@ -1,4 +1,4 @@ -/* Copyright (c) 1987 Regents of the University of California */ +/* Copyright (c) 1995 Regents of the University of California */ #ifndef lint static char SCCSid[] = "$SunId$ LBL"; @@ -68,12 +68,24 @@ int (*c_get)(), (*s_put)(); static char mybuf[512]; -char * -getcombuf(d) /* return buffer for my command */ -struct driver *d; +tocombuf(b, d) /* add command(s) to my buffer */ +register char *b; +register struct driver *d; { - d->inpready++; - return(mybuf+strlen(mybuf)); + register char *cp; + char *comstart; + + for (cp = mybuf; *cp; cp++) + ; + comstart = cp; + while (*cp++ = *b) + if (cp >= mybuf+sizeof(mybuf)) { + *comstart = '\0'; + return; /* what should I do about this? */ + } else if (*b++ == '\n') { + d->inpready++; + comstart = cp; + } } @@ -87,12 +99,14 @@ struct driver *d; if (!*cp) return(0); *cp++ = '\0'; +#ifdef DEBUG (*d->comout)(mybuf); /* echo my command */ (*d->comout)("\n"); +#endif /* send it as reply */ strcpy(b, mybuf); d->inpready--; - /* get next command */ + /* advance commands */ strcpy(mybuf, cp); return(1); }