files.c (file_hash_eq): Use filename_cmp instead of strcmp.
authorKai Tietz <ktietz@redhat.com>
Fri, 25 Mar 2011 19:11:26 +0000 (20:11 +0100)
committerKai Tietz <ktietz@gcc.gnu.org>
Fri, 25 Mar 2011 19:11:26 +0000 (20:11 +0100)
2011-03-25  Kai Tietz  <ktietz@redhat.com>

* files.c (file_hash_eq): Use filename_cmp
instead of strcmp.
(nonexistent_file_hash_eq): Likewise.
(remap_filename): Likewise.
Handle absolute DOS-path,
(append_file_to_dir): Check for IS_DIR_SEPARATOR
instead of slash.
(read_name_map): Likewise.
* linemap.c (linemap_add): Use filename_cmp
instead of strcmp.
* mkdeps.c (apply_vpath): Use filename_ncmp
instead of strncmp.
(deps_restore): Use filename_cmp instead of
strcmp.
* init.c (read_original_directory): Use
IS_DIR_SEPARATOR instead of checking for slash.

From-SVN: r171521

libcpp/ChangeLog
libcpp/files.c
libcpp/init.c
libcpp/line-map.c
libcpp/mkdeps.c

index c08e6fe..cfd07d4 100644 (file)
@@ -1,3 +1,22 @@
+2011-03-25  Kai Tietz  <ktietz@redhat.com>
+
+       * files.c (file_hash_eq): Use filename_cmp
+       instead of strcmp.
+       (nonexistent_file_hash_eq): Likewise.
+       (remap_filename): Likewise.
+       Handle absolute DOS-path,
+       (append_file_to_dir): Check for IS_DIR_SEPARATOR
+       instead of slash.
+       (read_name_map): Likewise.
+       * linemap.c (linemap_add): Use filename_cmp
+       instead of strcmp.
+       * mkdeps.c (apply_vpath): Use filename_ncmp
+       instead of strncmp.
+       (deps_restore): Use filename_cmp instead of
+       strcmp.
+       * init.c (read_original_directory): Use
+       IS_DIR_SEPARATOR instead of checking for slash.
+
 2011-03-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR preprocessor/48192
index 456c0b0..e3cff49 100644 (file)
@@ -1155,7 +1155,7 @@ file_hash_eq (const void *p, const void *q)
   else
     hname = entry->u.dir->name;
 
-  return strcmp (hname, fname) == 0;
+  return filename_cmp (hname, fname) == 0;
 }
 
 /* Compare entries in the nonexistent file hash table.  These are just
@@ -1163,7 +1163,7 @@ file_hash_eq (const void *p, const void *q)
 static int
 nonexistent_file_hash_eq (const void *p, const void *q)
 {
-  return strcmp ((const char *) p, (const char *) q) == 0;
+  return filename_cmp ((const char *) p, (const char *) q) == 0;
 }
 
 /* Initialize everything in this source file.  */
@@ -1413,7 +1413,7 @@ append_file_to_dir (const char *fname, cpp_dir *dir)
   flen = strlen (fname);
   path = XNEWVEC (char, dlen + 1 + flen + 1);
   memcpy (path, dir->name, dlen);
-  if (dlen && path[dlen - 1] != '/')
+  if (dlen && !IS_DIR_SEPARATOR (path[dlen - 1]))
     path[dlen++] = '/';
   memcpy (&path[dlen], fname, flen + 1);
 
@@ -1461,7 +1461,7 @@ read_name_map (cpp_dir *dir)
   len = dir->len;
   name = (char *) alloca (len + sizeof (FILE_NAME_MAP_FILE) + 1);
   memcpy (name, dir->name, len);
-  if (len && name[len - 1] != '/')
+  if (len && !IS_DIR_SEPARATOR (name[len - 1]))
     name[len++] = '/';
   strcpy (name + len, FILE_NAME_MAP_FILE);
   f = fopen (name, "r");
@@ -1532,10 +1532,18 @@ remap_filename (cpp_reader *pfile, _cpp_file *file)
        read_name_map (dir);
 
       for (index = 0; dir->name_map[index]; index += 2)
-       if (!strcmp (dir->name_map[index], fname))
+       if (!filename_cmp (dir->name_map[index], fname))
            return xstrdup (dir->name_map[index + 1]);
-
+      if (IS_ABSOLUTE_PATH (fname))
+       return NULL;
       p = strchr (fname, '/');
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+      {
+       char *p2 = strchr (fname, '\\');
+       if (!p || (p > p2))
+         p = p2;
+      }
+#endif
       if (!p || p == fname)
        return NULL;
 
index cfc16e8..5c6dacf 100644 (file)
@@ -26,6 +26,7 @@ along with this program; see the file COPYING3.  If not see
 #include "internal.h"
 #include "mkdeps.h"
 #include "localedir.h"
+#include "filenames.h"
 
 static void init_library (void);
 static void mark_named_operators (cpp_reader *, int);
@@ -640,8 +641,8 @@ read_original_directory (cpp_reader *pfile)
 
   if (token->type != CPP_STRING
       || ! (token->val.str.len >= 5
-           && token->val.str.text[token->val.str.len-2] == '/'
-           && token->val.str.text[token->val.str.len-3] == '/'))
+           && IS_DIR_SEPARATOR (token->val.str.text[token->val.str.len-2])
+           && IS_DIR_SEPARATOR (token->val.str.text[token->val.str.len-3])))
     {
       _cpp_backup_tokens (pfile, 3);
       return;
index a82c428..86e2484 100644 (file)
@@ -138,7 +138,7 @@ linemap_add (struct line_maps *set, enum lc_reason reason,
       else
        {
          from = INCLUDED_FROM (set, map - 1);
-         error = to_file && strcmp (from->to_file, to_file);
+         error = to_file && filename_cmp (from->to_file, to_file);
        }
 
       /* Depending upon whether we are handling preprocessed input or
index faac162..af11ac3 100644 (file)
@@ -130,7 +130,7 @@ apply_vpath (struct deps *d, const char *t)
       unsigned int i;
       for (i = 0; i < d->nvpaths; i++)
        {
-         if (!strncmp (d->vpathv[i], t, d->vpathlv[i]))
+         if (!filename_ncmp (d->vpathv[i], t, d->vpathlv[i]))
            {
              const char *p = t + d->vpathlv[i];
              if (!IS_DIR_SEPARATOR (*p))
@@ -421,7 +421,7 @@ deps_restore (struct deps *deps, FILE *fd, const char *self)
       buf[num_to_read] = '\0';
 
       /* Generate makefile dependencies from .pch if -nopch-deps.  */
-      if (self != NULL && strcmp (buf, self) != 0)
+      if (self != NULL && filename_cmp (buf, self) != 0)
         deps_add_dep (deps, buf);
     }