re PR pch/12112 (Putting PCH files in a directory completely broken)
authorPhil Edwards <phil@codesourcery.com>
Thu, 25 Sep 2003 04:46:44 +0000 (04:46 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Thu, 25 Sep 2003 04:46:44 +0000 (04:46 +0000)
2003-09-24  Phil Edwards  <phil@codesourcery.com>

PR pch/12112
* gcc/cppfiles.c (pch_open_file): Return based on combined
        result of all files.
(validate_pch): Return validate flag for current file.

From-SVN: r71751

gcc/ChangeLog
gcc/cppfiles.c

index 72e1dd5aad8076c0f009f1eaac5b0b6949428f74..25b795ef6f03b03aa9ecb438b43fdfb055aff04c 100644 (file)
@@ -1,3 +1,10 @@
+2003-09-24  Phil Edwards  <phil@codesourcery.com>
+
+       PR pch/12112
+       * gcc/cppfiles.c (pch_open_file): Return based on combined
+        result of all files.
+       (validate_pch): Return validate flag for current file.
+       
 2003-09-24  Roger Sayle  <roger@eyesopen.com>
 
        PR bootstrap/12358
index a4edd5da33b7993cc280aa7f16b7b573fdef5911..10aee4f5bd7cb013ca97e8a60974646b7f156c3a 100644 (file)
@@ -273,6 +273,9 @@ pch_open_file (cpp_reader *pfile, _cpp_file *file)
          while ((d = readdir (pchdir)) != NULL)
            {
              dlen = strlen (d->d_name) + 1;
+             if ((strcmp (d->d_name, ".") == 0)
+                 || (strcmp (d->d_name, "..") == 0))
+               continue;
              if (dlen + plen > len)
                {
                  len += dlen + 64;
@@ -285,6 +288,7 @@ pch_open_file (cpp_reader *pfile, _cpp_file *file)
            }
          closedir (pchdir);
        }
+      file->pch |= valid;
     }
 
   if (valid)
@@ -1185,14 +1189,14 @@ static bool
 validate_pch (cpp_reader *pfile, _cpp_file *file, const char *pchname)
 {
   const char *saved_path = file->path;
+  bool valid = false;
 
   file->path = pchname;
   if (open_file (file))
     {
-      if ((file->pch & 2) == 0)
-       file->pch = pfile->cb.valid_pch (pfile, pchname, file->fd);
+      valid = 1 & pfile->cb.valid_pch (pfile, pchname, file->fd);
 
-      if (!include_pch_p (file))
+      if (!valid)
        {
          close (file->fd);
          file->fd = -1;
@@ -1204,12 +1208,10 @@ validate_pch (cpp_reader *pfile, _cpp_file *file, const char *pchname)
          for (i = 1; i < pfile->line_maps.depth; i++)
            putc ('.', stderr);
          fprintf (stderr, "%c %s\n",
-                  include_pch_p (file) ? '!' : 'x', pchname);
+                  valid ? '!' : 'x', pchname);
        }
     }
-  else
-    file->pch = 2;
 
   file->path = saved_path;
-  return include_pch_p (file);
+  return valid;
 }