summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-08 17:54:15 +0000
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-08 17:54:15 +0000
commit76147072b6b6bca07a1a4958700bb954b86509cc (patch)
treef86b7349baa4cd17384b32dbf3756e3d852aa6bc /gcc
parent95559821b00ae7f92403222fc48fd1eb9bcb64b8 (diff)
downloadgcc-76147072b6b6bca07a1a4958700bb954b86509cc.tar.gz
* cppfiles.c (open_file): Don't mark zero-length files
never-reread here. Don't output diagnostics here either. (stack_include_file): Mark them never-reread here. (_cpp_read_file): Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46084 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cppfiles.c40
2 files changed, 22 insertions, 25 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 99100d43c94..6c22095fe3d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2001-10-08 Neil Booth <neil@daikokuya.demon.co.uk>
+
+ * cppfiles.c (open_file): Don't mark zero-length files
+ never-reread here. Don't output diagnostics here either.
+ (stack_include_file): Mark them never-reread here.
+ (_cpp_read_file): Update.
+
2001-10-08 Richard Henderson <rth@redhat.com>
* config/i386/sol2.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.
diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c
index 5b8f9076b39..ebefd9538c6 100644
--- a/gcc/cppfiles.c
+++ b/gcc/cppfiles.c
@@ -248,30 +248,15 @@ open_file (pfile, filename)
if (file->fd != -1 && fstat (file->fd, &file->st) == 0)
{
+ if (!S_ISDIR (file->st.st_mode))
+ return file;
/* If it's a directory, we return null and continue the search
as the file we're looking for may appear elsewhere in the
search path. */
- if (S_ISDIR (file->st.st_mode))
- errno = ENOENT;
- else
- {
- /* Mark a regular, zero-length file never-reread now. */
- if (S_ISREG (file->st.st_mode) && file->st.st_size == 0)
- {
- _cpp_never_reread (file);
- close (file->fd);
- file->fd = -1;
- }
-
- return file;
- }
+ errno = ENOENT;
}
- /* Don't issue an error message if the file doesn't exist. */
file->err_no = errno;
- if (errno != ENOENT && errno != ENOTDIR)
- cpp_error_from_errno (pfile, file->name);
-
return 0;
}
@@ -302,9 +287,14 @@ stack_include_file (pfile, inc)
/* Not in cache? */
if (! inc->buffer)
{
- /* If an error occurs, do not try to read this file again. */
- if (read_include_file (pfile, inc))
+ /* Mark a regular, zero-length file never-reread. Zero-length
+ files are stacked the first time, so preprocessing a main
+ file of zero length does not raise an error. */
+ if (S_ISREG (inc->st.st_mode) && inc->st.st_size == 0)
+ _cpp_never_reread (inc);
+ else if (read_include_file (pfile, inc))
{
+ /* If an error occurs, do not try to read this file again. */
_cpp_never_reread (inc);
return false;
}
@@ -710,14 +700,14 @@ _cpp_read_file (pfile, fname)
const char *fname;
{
struct include_file *f = open_file (pfile, fname);
- bool stacked = false;
if (f == NULL)
- cpp_error_from_errno (pfile, fname);
- else
- stacked = stack_include_file (pfile, f);
+ {
+ cpp_error_from_errno (pfile, fname);
+ return false;
+ }
- return stacked;
+ return stack_include_file (pfile, f);
}
/* Do appropriate cleanup when a file buffer is popped off the input