mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 01:07:52 +00:00
[libiberty/filename_cmp] Darwin has case-insensitive filesystems
include/ChangeLog:
* filenames.h (HAVE_CASE_INSENSITIVE_FILE_SYSTEM): Define
on Darwin, as well as on the systems that use a DOS-like
filesystem.
libiberty/ChangeLog:
* filename_cmp.c (filename_cmp, filename_ncmp): Add handling of
HAVE_CASE_INSENSITIVE_FILE_SYSTEM.
This commit is contained in:
@@ -50,19 +50,27 @@ and backward slashes are equal.
|
||||
int
|
||||
filename_cmp (const char *s1, const char *s2)
|
||||
{
|
||||
#ifndef HAVE_DOS_BASED_FILE_SYSTEM
|
||||
#if !defined(HAVE_DOS_BASED_FILE_SYSTEM) \
|
||||
&& !defined(HAVE_CASE_INSENSITIVE_FILE_SYSTEM)
|
||||
return strcmp(s1, s2);
|
||||
#else
|
||||
for (;;)
|
||||
{
|
||||
int c1 = TOLOWER (*s1);
|
||||
int c2 = TOLOWER (*s2);
|
||||
int c1 = *s1;
|
||||
int c2 = *s2;
|
||||
|
||||
#if defined (HAVE_CASE_INSENSITIVE_FILE_SYSTEM)
|
||||
c1 = TOLOWER (c1);
|
||||
c2 = TOLOWER (c2);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
|
||||
/* On DOS-based file systems, the '/' and the '\' are equivalent. */
|
||||
if (c1 == '/')
|
||||
c1 = '\\';
|
||||
if (c2 == '/')
|
||||
c2 = '\\';
|
||||
#endif
|
||||
|
||||
if (c1 != c2)
|
||||
return (c1 - c2);
|
||||
@@ -100,21 +108,29 @@ and backward slashes are equal.
|
||||
int
|
||||
filename_ncmp (const char *s1, const char *s2, size_t n)
|
||||
{
|
||||
#ifndef HAVE_DOS_BASED_FILE_SYSTEM
|
||||
#if !defined(HAVE_DOS_BASED_FILE_SYSTEM) \
|
||||
&& !defined(HAVE_CASE_INSENSITIVE_FILE_SYSTEM)
|
||||
return strncmp(s1, s2, n);
|
||||
#else
|
||||
if (!n)
|
||||
return 0;
|
||||
for (; n > 0; --n)
|
||||
{
|
||||
int c1 = TOLOWER (*s1);
|
||||
int c2 = TOLOWER (*s2);
|
||||
int c1 = *s1;
|
||||
int c2 = *s2;
|
||||
|
||||
#if defined (HAVE_CASE_INSENSITIVE_FILE_SYSTEM)
|
||||
c1 = TOLOWER (c1);
|
||||
c2 = TOLOWER (c2);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
|
||||
/* On DOS-based file systems, the '/' and the '\' are equivalent. */
|
||||
if (c1 == '/')
|
||||
c1 = '\\';
|
||||
if (c2 == '/')
|
||||
c2 = '\\';
|
||||
#endif
|
||||
|
||||
if (c1 == '\0' || c1 != c2)
|
||||
return (c1 - c2);
|
||||
|
||||
Reference in New Issue
Block a user