2012-08-06 Roland McGrath <roland@hack.frob.com>
+ * dirent/alphasort.c [_DIRENT_MATCHES_DIRENT64]:
+ Define alphasort64 as an alias.
+ * dirent/versionsort.c [_DIRENT_MATCHES_DIRENT64]:
+ Define versionsort64 as an alias.
+ * dirent/scandir.c [_DIRENT_MATCHES_DIRENT64]:
+ Define scandir64 as an alias.
+ * dirent/scandirat.c [_DIRENT_MATCHES_DIRENT64]:
+ Define scandirat64 as an alias.
+ * dirent/alphasort64.c (alphasort64):
+ Conditionalize on [!_DIRENT_MATCHES_DIRENT64].
+ * dirent/versionsort64.c: Likewise.
+ * dirent/scandir64.c: Likewise.
+ * dirent/scandirat64.c: Likewise.
+ * sysdeps/wordsize-64/alphasort.c: File removed.
+ * sysdeps/wordsize-64/alphasort64.c: File removed.
+ * sysdeps/wordsize-64/scandir.c: File removed.
+ * sysdeps/wordsize-64/scandir64.c: File removed.
+ * sysdeps/wordsize-64/scandirat.c: File removed.
+ * sysdeps/wordsize-64/scandirat64.c: File removed.
+ * sysdeps/wordsize-64/versionsort.c: File removed.
+ * sysdeps/wordsize-64/versionsort64.c: File removed.
+ * sysdeps/unix/sysv/linux/x86_64/x32/alphasort.c: File removed.
+ * sysdeps/unix/sysv/linux/x86_64/x32/alphasort64.c: File removed.
+ * sysdeps/unix/sysv/linux/x86_64/x32/scandir.c: File removed.
+ * sysdeps/unix/sysv/linux/x86_64/x32/scandir64.c: File removed.
+ * sysdeps/unix/sysv/linux/x86_64/x32/scandirat.c: File removed.
+ * sysdeps/unix/sysv/linux/x86_64/x32/scandirat64.c: File removed.
+ * sysdeps/unix/sysv/linux/x86_64/x32/versionsort.c: File removed.
+ * sysdeps/unix/sysv/linux/x86_64/x32/versionsort64.c: File removed.
+
+ * bits/typesizes.h [__LP64__] (__INO_T_MATCHES_INO64_T): New macros.
+ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h:
+ [__s390x__] (__INO_T_MATCHES_INO64_T): New macro.
+ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
+ [defined __arch64__ || defined __sparcv9]
+ (__INO_T_MATCHES_INO64_T): New macro.
+ * sysdeps/unix/sysv/linux/x86/bits/typesizes.h
+ [__x86_64__] (__INO_T_MATCHES_INO64_T): New macro.
+ * bits/dirent.h (_DIRENT_MATCHES_DIRENT64): New macro.
+ * sysdeps/unix/sysv/linux/bits/dirent.h
+ [defined __OFF_T_MATCHES_OFF64_T && defined __INO_T_MATCHES_INO64_T]
+ (_DIRENT_MATCHES_DIRENT64): New macro.
+
* io/lockf.c [__OFF_T_MATCHES_OFF64_T]:
Define lockf64 as an alias.
* libio/fseeko.c [__OFF_T_MATCHES_OFF64_T]:
/* Directory entry structure `struct dirent'. Stub version.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
int d_fileno;
};
#endif
+
+/* Inform libc code that these two types are identical. */
+#define _DIRENT_MATCHES_DIRENT64 1
for all ABI purposes, even if possibly expressed as different base types
for C type-checking purposes. */
# define __OFF_T_MATCHES_OFF64_T 1
+
+/* Same for ino_t and ino64_t. */
+# define __INO_T_MATCHES_INO64_T 1
#endif
/* Number of descriptors that can fit in an `fd_set'. */
-/* Copyright (C) 1992, 1997, 1998, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+/* We need to avoid the header declaration of alphasort64, because
+ the types don't match alphasort and then the compiler will
+ complain about the mismatch when we do the alias below. */
+#define alphasort64 __renamed_alphasort64
+
#include <dirent.h>
+
+#undef alphasort64
+
#include <string.h>
int
{
return strcoll ((*a)->d_name, (*b)->d_name);
}
+
+#ifdef _DIRENT_MATCHES_DIRENT64
+weak_alias (alphasort, alphasort64)
+#endif
-/* Copyright (C) 1992, 1997, 1998, 2000, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#include <dirent.h>
#include <string.h>
+/* alphasort.c defines alphasort64 as an alias if _DIRENT_MATCHES_DIRENT64. */
+#ifndef _DIRENT_MATCHES_DIRENT64
+
int
alphasort64 (const struct dirent64 **a, const struct dirent64 **b)
{
return strcoll ((*a)->d_name, (*b)->d_name);
}
+
+#endif
-/* Copyright (C) 1992-1998,2000,2002,2003,2009,2011
- Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+/* We need to avoid the header declaration of scandir64, because
+ the types don't match scandir and then the compiler will
+ complain about the mismatch when we do the alias below. */
+#define scandir64 __renamed_scandir64
+
#include <dirent.h>
+
+#undef scandir64
+
#include <fcntl.h>
#ifndef SCANDIR
{
return SCANDIRAT (AT_FDCWD, dir, namelist, select, cmp);
}
+
+#ifdef _DIRENT_MATCHES_DIRENT64
+weak_alias (scandir, scandir64)
+#endif
-/* Copyright (C) 2000, 2009, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#include <dirent.h>
+/* scandir.c defines scandir64 as an alias if _DIRENT_MATCHES_DIRENT64. */
+#ifndef _DIRENT_MATCHES_DIRENT64
+
#define SCANDIR scandir64
#define SCANDIRAT scandirat64
#define DIRENT_TYPE struct dirent64
#include <dirent/scandir.c>
+
+#endif
-/* Copyright (C) 1992-1998,2000,2002,2003,2009,2011
- Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+/* We need to avoid the header declaration of scandir64, because
+ the types don't match scandir and then the compiler will
+ complain about the mismatch when we do the alias below. */
+#define scandirat64 __renamed_scandirat64
+
#include <dirent.h>
+
+#undef scandirat64
+
#include <stdlib.h>
#include <string.h>
#include <errno.h>
return c.cnt;
}
libc_hidden_def (SCANDIRAT)
+
+#ifdef _DIRENT_MATCHES_DIRENT64
+weak_alias (scandirat, scandirat64)
+#endif
-/* Copyright (C) 2000, 2009, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#include <dirent.h>
+/* scandirat.c defines scandirat64 as an alias if _DIRENT_MATCHES_DIRENT64. */
+#ifndef _DIRENT_MATCHES_DIRENT64
+
#define SCANDIRAT scandirat64
#define READDIR __readdir64
#define DIRENT_TYPE struct dirent64
#define SKIP_SCANDIR_CANCEL 1
#include "scandirat.c"
+
+#endif
-/* Copyright (C) 1992, 1997, 1998, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+/* We need to avoid the header declaration of versionsort64, because
+ the types don't match versionsort and then the compiler will
+ complain about the mismatch when we do the alias below. */
+#define versionsort64 __renamed_versionsort64
+
#include <dirent.h>
+
+#undef versionsort64
+
#include <string.h>
int
{
return __strverscmp ((*a)->d_name, (*b)->d_name);
}
+
+#ifdef _DIRENT_MATCHES_DIRENT64
+weak_alias (versionsort, versionsort64)
+#endif
-/* Copyright (C) 1992, 1997, 1998, 2000, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#include <dirent.h>
#include <string.h>
+/* versionsort.c defines a versionsort64 alias if _DIRENT_MATCHES_DIRENT64. */
+#ifndef _DIRENT_MATCHES_DIRENT64
+
int
versionsort64 (const struct dirent64 **a, const struct dirent64 **b)
{
return __strverscmp ((*a)->d_name, (*b)->d_name);
}
+
+#endif
2012-08-02 Roland McGrath <roland@hack.frob.com>
+ * sysdeps/unix/sysv/linux/alpha/bits/dirent.h
+ (_DIRENT_MATCHES_DIRENT64): New macro.
+
+2012-08-02 Roland McGrath <roland@hack.frob.com>
+
* sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
(__OFF_T_MATCHES_OFF64_T): New macro.
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#define _DIRENT_HAVE_D_OFF
#define _DIRENT_HAVE_D_TYPE
+/* Inform libc code that these two types are effectively identical. */
+#define _DIRENT_MATCHES_DIRENT64 1
+
#endif /* bits/dirent.h */
for all ABI purposes, even if possibly expressed as different base types
for C type-checking purposes. */
# define __OFF_T_MATCHES_OFF64_T 1
+
+/* Same for ino_t and ino64_t. */
+# define __INO_T_MATCHES_INO64_T 1
#endif
/* Number of descriptors that can fit in an `fd_set'. */
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#define _DIRENT_HAVE_D_RECLEN
#define _DIRENT_HAVE_D_OFF
#define _DIRENT_HAVE_D_TYPE
+
+#if defined __OFF_T_MATCHES_OFF64_T && defined __INO_T_MATCHES_INO64_T
+/* Inform libc code that these two types are effectively identical. */
+# define _DIRENT_MATCHES_DIRENT64 1
+#endif
for all ABI purposes, even if possibly expressed as different base types
for C type-checking purposes. */
# define __OFF_T_MATCHES_OFF64_T 1
+
+/* Same for ino_t and ino64_t. */
+# define __INO_T_MATCHES_INO64_T 1
#endif
/* Number of descriptors that can fit in an `fd_set'. */
for all ABI purposes, even if possibly expressed as different base types
for C type-checking purposes. */
# define __OFF_T_MATCHES_OFF64_T 1
+
+/* Same for ino_t and ino64_t. */
+# define __INO_T_MATCHES_INO64_T 1
#endif
/* Number of descriptors that can fit in an `fd_set'. */
for all ABI purposes, even if possibly expressed as different base types
for C type-checking purposes. */
# define __OFF_T_MATCHES_OFF64_T 1
+
+/* Same for ino_t and ino64_t. */
+# define __INO_T_MATCHES_INO64_T 1
#endif
/* Number of descriptors that can fit in an `fd_set'. */
+++ /dev/null
-#include <sysdeps/wordsize-64/alphasort.c>
+++ /dev/null
-#include <sysdeps/wordsize-64/alphasort64.c>
+++ /dev/null
-#include <sysdeps/wordsize-64/scandir.c>
+++ /dev/null
-#include <sysdeps/wordsize-64/scandir64.c>
+++ /dev/null
-#include <sysdeps/wordsize-64/scandirat.c>
+++ /dev/null
-#include <sysdeps/wordsize-64/scandirat64.c>
+++ /dev/null
-#include <sysdeps/wordsize-64/versionsort.c>
+++ /dev/null
-#include <sysdeps/wordsize-64/versionsort64.c>
+++ /dev/null
-#define alphasort64 rename_alphasort64
-
-#include "../../dirent/alphasort.c"
-
-#undef alphasort64
-
-weak_alias (alphasort, alphasort64)
+++ /dev/null
-/* Defined in alphasort.c. */
+++ /dev/null
-#define scandir64 scandir64_renamed
-
-#include "../../dirent/scandir.c"
-
-#undef scandir64
-weak_alias (scandir, scandir64)
+++ /dev/null
-/* Defined in scandir.c. */
+++ /dev/null
-#define scandirat64 scandirat64_renamed
-
-#include "../../dirent/scandirat.c"
-
-#undef scandirat64
-weak_alias (scandirat, scandirat64)
+++ /dev/null
-/* Defined in scandirat.c. */
+++ /dev/null
-#define versionsort64 rename_versionsort64
-
-#include "../../dirent/versionsort.c"
-
-#undef versionsort64
-
-weak_alias (versionsort, versionsort64)
+++ /dev/null
-/* Defined in versionsort.c. */