From ae1139f97d3a90768228333a245f5ef4ed0f8326 Mon Sep 17 00:00:00 2001 From: Douglas B Rupp Date: Wed, 21 Nov 2001 17:03:27 -0500 Subject: [PATCH] cppfiles.c (STAT_SIZE_TOO_BIG): Define. * cppfiles.c (STAT_SIZE_TOO_BIG): Define. (read_include_file): Use STAT_SIZE_TOO_BIG. From-SVN: r47245 --- gcc/ChangeLog | 3 +++ gcc/cppfiles.c | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 351c21e0e69..3e0ad011f51 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Wed Nov 21 16:44:01 2001 Douglas B. Rupp + * cppfiles.c (STAT_SIZE_TOO_BIG): Define. + (read_include_file): Use STAT_SIZE_TOO_BIG. + * cppinit.c (INO_T_COPY): Define. (INO_T_EQ): Uppercase parameters. (append_include_chain): Use INO_T_COPY. diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c index bacb8e18ef9..32994f7256e 100644 --- a/gcc/cppfiles.c +++ b/gcc/cppfiles.c @@ -73,6 +73,15 @@ struct include_file unsigned char mapped; /* file buffer is mmapped */ }; +/* Variable length record files on VMS will have a stat size that includes + record control characters that won't be included in the read size. */ +#ifdef VMS +# define FAB_C_VAR 2 /* variable length records (see Starlet fabdef.h) */ +# define STAT_SIZE_TOO_BIG(ST) ((ST).st_fab_rfm == FAB_C_VAR) +#else +# define STAT_SIZE_TOO_BIG(ST) 0 +#endif + /* The cmacro works like this: If it's NULL, the file is to be included again. If it's NEVER_REREAD, the file is never to be included again. Otherwise it is a macro hashnode, and the file is @@ -392,7 +401,11 @@ read_include_file (pfile, inc) goto perror_fail; if (count == 0) { - cpp_warning (pfile, "%s is shorter than expected", inc->name); + if (!STAT_SIZE_TOO_BIG (inc->st)) + cpp_warning + (pfile, "%s is shorter than expected", inc->name); + buf = xrealloc (buf, offset); + inc->st.st_size = offset; break; } offset += count;