From 76147072b6b6bca07a1a4958700bb954b86509cc Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 8 Oct 2001 17:54:15 +0000 Subject: [PATCH] * 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 --- gcc/ChangeLog | 7 +++++++ gcc/cppfiles.c | 40 +++++++++++++++------------------------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 99100d4..6c22095 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-10-08 Neil Booth + + * 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 * config/i386/sol2.h (UNALIGNED_DOUBLE_INT_ASM_OP): New. diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c index 5b8f907..ebefd95 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 -- 2.7.4