From d519e2c19be51b628b3d505cea77b8fb98798e0a Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 14 Dec 1993 20:09:51 +0000 Subject: Formerly read.c.~71~ --- read.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/read.c b/read.c index 3488f08..0ad6c5b 100644 --- a/read.c +++ b/read.c @@ -1648,18 +1648,21 @@ readline (linebuffer, stream, filename, lineno) *p = '\0'; - while (1) + while (fgets (p, end - p, stream) != 0) { - if (fgets (p, end - p, stream) == 0) - if (feof (stream)) - break; - else - pfatal_with_name (filename); - len = strlen (p); if (len == 0) - /* This only happens when the first thing on the line is a '\0'. */ - makefile_fatal (filename, lineno, "NUL not allowed in makefile"); + { + /* This only happens when the first thing on the line is a '\0'. + It is a pretty hopeless case, but (wonder of wonders) Athena + lossage strikes again! (xmkmf puts NULs in its makefiles.) + There is nothing really to be done; we synthesize a newline so + the following line doesn't appear to be part of this line. */ + makefile_error (filename, lineno, + "warning: NUL character seen; rest of line ignored"); + p[0] = '\n'; + len = 1; + } p += len; if (p[-1] != '\n') @@ -1715,6 +1718,9 @@ readline (linebuffer, stream, filename, lineno) } } + if (ferror (stream)) + pfatal_with_name (filename); + return nlines; } -- cgit v1.2.3