[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:
parent
02e7efbffb
commit
7d6b320b79
4 changed files with 41 additions and 6 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2011-07-01 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
* filenames.h (HAVE_CASE_INSENSITIVE_FILE_SYSTEM): Define
|
||||||
|
on Darwin, as well as on the systems that use a DOS-like
|
||||||
|
filesystem.
|
||||||
|
|
||||||
2011-06-22 Jakub Jelinek <jakub@redhat.com>
|
2011-06-22 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR debug/47858
|
PR debug/47858
|
||||||
|
|
|
@ -34,10 +34,18 @@ extern "C" {
|
||||||
# ifndef HAVE_DOS_BASED_FILE_SYSTEM
|
# ifndef HAVE_DOS_BASED_FILE_SYSTEM
|
||||||
# define HAVE_DOS_BASED_FILE_SYSTEM 1
|
# define HAVE_DOS_BASED_FILE_SYSTEM 1
|
||||||
# endif
|
# endif
|
||||||
|
# ifndef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
|
||||||
|
# define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1
|
||||||
|
# endif
|
||||||
# define HAS_DRIVE_SPEC(f) HAS_DOS_DRIVE_SPEC (f)
|
# define HAS_DRIVE_SPEC(f) HAS_DOS_DRIVE_SPEC (f)
|
||||||
# define IS_DIR_SEPARATOR(c) IS_DOS_DIR_SEPARATOR (c)
|
# define IS_DIR_SEPARATOR(c) IS_DOS_DIR_SEPARATOR (c)
|
||||||
# define IS_ABSOLUTE_PATH(f) IS_DOS_ABSOLUTE_PATH (f)
|
# define IS_ABSOLUTE_PATH(f) IS_DOS_ABSOLUTE_PATH (f)
|
||||||
#else /* not DOSish */
|
#else /* not DOSish */
|
||||||
|
# if defined(__APPLE__)
|
||||||
|
# ifndef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
|
||||||
|
# define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1
|
||||||
|
# endif
|
||||||
|
# endif /* __APPLE__ */
|
||||||
# define HAS_DRIVE_SPEC(f) (0)
|
# define HAS_DRIVE_SPEC(f) (0)
|
||||||
# define IS_DIR_SEPARATOR(c) IS_UNIX_DIR_SEPARATOR (c)
|
# define IS_DIR_SEPARATOR(c) IS_UNIX_DIR_SEPARATOR (c)
|
||||||
# define IS_ABSOLUTE_PATH(f) IS_UNIX_ABSOLUTE_PATH (f)
|
# define IS_ABSOLUTE_PATH(f) IS_UNIX_ABSOLUTE_PATH (f)
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-07-01 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
* filename_cmp.c (filename_cmp, filename_ncmp): Add handling of
|
||||||
|
HAVE_CASE_INSENSITIVE_FILE_SYSTEM.
|
||||||
|
|
||||||
2011-07-01 Jan Kratochvil <jan.kratochvil@redhat.com>
|
2011-07-01 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
PR debug/49408
|
PR debug/49408
|
||||||
|
|
|
@ -50,19 +50,27 @@ and backward slashes are equal.
|
||||||
int
|
int
|
||||||
filename_cmp (const char *s1, const char *s2)
|
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);
|
return strcmp(s1, s2);
|
||||||
#else
|
#else
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
int c1 = TOLOWER (*s1);
|
int c1 = *s1;
|
||||||
int c2 = TOLOWER (*s2);
|
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. */
|
/* On DOS-based file systems, the '/' and the '\' are equivalent. */
|
||||||
if (c1 == '/')
|
if (c1 == '/')
|
||||||
c1 = '\\';
|
c1 = '\\';
|
||||||
if (c2 == '/')
|
if (c2 == '/')
|
||||||
c2 = '\\';
|
c2 = '\\';
|
||||||
|
#endif
|
||||||
|
|
||||||
if (c1 != c2)
|
if (c1 != c2)
|
||||||
return (c1 - c2);
|
return (c1 - c2);
|
||||||
|
@ -100,21 +108,29 @@ and backward slashes are equal.
|
||||||
int
|
int
|
||||||
filename_ncmp (const char *s1, const char *s2, size_t n)
|
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);
|
return strncmp(s1, s2, n);
|
||||||
#else
|
#else
|
||||||
if (!n)
|
if (!n)
|
||||||
return 0;
|
return 0;
|
||||||
for (; n > 0; --n)
|
for (; n > 0; --n)
|
||||||
{
|
{
|
||||||
int c1 = TOLOWER (*s1);
|
int c1 = *s1;
|
||||||
int c2 = TOLOWER (*s2);
|
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. */
|
/* On DOS-based file systems, the '/' and the '\' are equivalent. */
|
||||||
if (c1 == '/')
|
if (c1 == '/')
|
||||||
c1 = '\\';
|
c1 = '\\';
|
||||||
if (c2 == '/')
|
if (c2 == '/')
|
||||||
c2 = '\\';
|
c2 = '\\';
|
||||||
|
#endif
|
||||||
|
|
||||||
if (c1 == '\0' || c1 != c2)
|
if (c1 == '\0' || c1 != c2)
|
||||||
return (c1 - c2);
|
return (c1 - c2);
|
||||||
|
|
Loading…
Reference in a new issue