summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>1993-12-14 20:09:51 +0000
committerRoland McGrath <roland@redhat.com>1993-12-14 20:09:51 +0000
commitd519e2c19be51b628b3d505cea77b8fb98798e0a (patch)
treefb5226aa93595d0759ebe5e8d49184bc023ca6de
parentcf9bc4ae2fb8cd473766dce8bf66982c3a842b47 (diff)
downloadgunmake-d519e2c19be51b628b3d505cea77b8fb98798e0a.tar.gz
Formerly read.c.~71~
-rw-r--r--read.c24
1 files 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;
}