===================================================================
@@ -1155,7 +1155,7 @@ file_hash_eq (const void *p, const void
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
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, c
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_
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;
===================================================================
@@ -138,7 +138,7 @@ linemap_add (struct line_maps *set, enum
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
===================================================================
@@ -130,7 +130,7 @@ apply_vpath (struct deps *d, const char
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 *f
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);
}
===================================================================
@@ -26,6 +26,7 @@ along with this program; see the file CO
#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 *pfi
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;