aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas B Rupp <rupp@gnat.com>2001-11-21 17:03:27 -0500
committerRichard Kenner <kenner@gcc.gnu.org>2001-11-21 17:03:27 -0500
commitae1139f97d3a90768228333a245f5ef4ed0f8326 (patch)
treebd4d818110af28233fe510b5b206e04287bd8f13
parentca47c89e553c8f1824eefce0273917bd85e04c52 (diff)
downloadgcc-ae1139f97d3a90768228333a245f5ef4ed0f8326.zip
gcc-ae1139f97d3a90768228333a245f5ef4ed0f8326.tar.gz
gcc-ae1139f97d3a90768228333a245f5ef4ed0f8326.tar.bz2
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
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/cppfiles.c15
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 351c21e..3e0ad01 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
Wed Nov 21 16:44:01 2001 Douglas B. Rupp <rupp@gnat.com>
+ * 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 bacb8e1..32994f7 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;