Bugfix für überlange Befehlszeilen

This commit is contained in:
Enno Rehling 2004-10-14 22:37:16 +00:00
parent 419442d887
commit bd8a8634fc
1 changed files with 10 additions and 7 deletions

View File

@ -366,16 +366,19 @@ getbuf(FILE * F)
end = bp + strlen((const char *)bp); end = bp + strlen((const char *)bp);
if (*(end-1)=='\n') *(--end) = 0; if (*(end-1)=='\n') *(--end) = 0;
else { else {
while (bp && !lbuf[MAXLINE-1] && lbuf[MAXLINE-2]!='\n') { /* wenn die zeile länger als erlaubt war, ist sie ungültig,
/* wenn die zeile länger als erlaubt war, * und wird mit dem rest weggeworfen: */
* wird der rest weggeworfen: */ while (bp!=NULL) {
bp = (unsigned char *)fgets(buf, 1024, F); bp = (unsigned char *)fgets(lbuf, MAXLINE, F);
comment = false; end = bp + strlen((const char *)bp);
if (*(end-1)=='\n') break;
lbuf[MAXLINE-1] = 0;
} }
bp = (unsigned char *)lbuf; comment = false;
bp = NULL;
} }
cont = false; cont = false;
while (cp!=buf+MAXLINE && (char*)bp!=lbuf+MAXLINE && *bp) { while (bp!=NULL && *bp && cp!=buf+MAXLINE && (char*)bp!=lbuf+MAXLINE) {
if (isspace(*bp)) { if (isspace(*bp)) {
if (eatwhite) { if (eatwhite) {
do { ++bp; } while ((char*)bp!=lbuf+MAXLINE && isspace(*bp)); do { ++bp; } while ((char*)bp!=lbuf+MAXLINE && isspace(*bp));