mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-18 03:58:56 +08:00
gcc.c (lookup_compiler): Make multiple passes for case insensitive filesystems.
* gcc.c (lookup_compiler): Make multiple passes for case insensitive filesystems. From-SVN: r33393
This commit is contained in:
parent
dfb99c83a6
commit
03bf1c28ac
@ -1,3 +1,8 @@
|
||||
Mon Apr 24 17:34:18 2000 Mumit Khan <khan@xraylith.wisc.edu>
|
||||
|
||||
* gcc.c (lookup_compiler): Make multiple passes for case
|
||||
insensitive filesystems.
|
||||
|
||||
2000-04-24 Neil Booth <NeilB@earthling.net>
|
||||
|
||||
* cpphash.c: replace HSPACE_BEFORE with PREV_WHITESPACE.
|
||||
|
67
gcc/gcc.c
67
gcc/gcc.c
@ -5638,38 +5638,53 @@ lookup_compiler (name, length, language)
|
||||
(!strcmp (cp->suffix, "-") && !strcmp (name, "-"))
|
||||
|| (strlen (cp->suffix) < length
|
||||
/* See if the suffix matches the end of NAME. */
|
||||
#ifdef OS2
|
||||
&& ((!strcmp (cp->suffix,
|
||||
name + length - strlen (cp->suffix))
|
||||
|| !strpbrk (cp->suffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
|
||||
&& !strcasecmp (cp->suffix,
|
||||
name + length - strlen (cp->suffix)))
|
||||
#else
|
||||
&& !strcmp (cp->suffix,
|
||||
name + length - strlen (cp->suffix))
|
||||
#endif
|
||||
))
|
||||
break;
|
||||
}
|
||||
|
||||
#if defined (OS2) ||defined (HAVE_DOS_BASED_FILE_SYSTEM)
|
||||
/* look again, but case-insensitively this time. */
|
||||
if (cp < compilers)
|
||||
for (cp = compilers + n_compilers - 1; cp >= compilers; cp--)
|
||||
{
|
||||
if (/* The suffix `-' matches only the file name `-'. */
|
||||
(!strcmp (cp->suffix, "-") && !strcmp (name, "-"))
|
||||
|| (strlen (cp->suffix) < length
|
||||
/* See if the suffix matches the end of NAME. */
|
||||
&& ((!strcmp (cp->suffix,
|
||||
name + length - strlen (cp->suffix))
|
||||
|| !strpbrk (cp->suffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
|
||||
&& !strcasecmp (cp->suffix,
|
||||
name + length - strlen (cp->suffix)))
|
||||
))
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if (cp >= compilers)
|
||||
{
|
||||
if (cp->spec[0][0] == '@')
|
||||
{
|
||||
if (cp->spec[0][0] == '@')
|
||||
{
|
||||
struct compiler *new;
|
||||
struct compiler *new;
|
||||
|
||||
/* An alias entry maps a suffix to a language.
|
||||
Search for the language; pass 0 for NAME and LENGTH
|
||||
to avoid infinite recursion if language not found.
|
||||
Construct the new compiler spec. */
|
||||
language = cp->spec[0] + 1;
|
||||
new = (struct compiler *) xmalloc (sizeof (struct compiler));
|
||||
new->suffix = cp->suffix;
|
||||
memcpy (new->spec,
|
||||
lookup_compiler (NULL_PTR, 0, language)->spec,
|
||||
sizeof new->spec);
|
||||
return new;
|
||||
}
|
||||
|
||||
/* A non-alias entry: return it. */
|
||||
return cp;
|
||||
/* An alias entry maps a suffix to a language.
|
||||
Search for the language; pass 0 for NAME and LENGTH
|
||||
to avoid infinite recursion if language not found.
|
||||
Construct the new compiler spec. */
|
||||
language = cp->spec[0] + 1;
|
||||
new = (struct compiler *) xmalloc (sizeof (struct compiler));
|
||||
new->suffix = cp->suffix;
|
||||
memcpy (new->spec,
|
||||
lookup_compiler (NULL_PTR, 0, language)->spec,
|
||||
sizeof new->spec);
|
||||
return new;
|
||||
}
|
||||
|
||||
/* A non-alias entry: return it. */
|
||||
return cp;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user