Clean up {alphasort,versionsort,scandir,scandirat}{,64} for struct dirent == struct...
authorRoland McGrath <roland@hack.frob.com>
Mon, 6 Aug 2012 23:47:58 +0000 (16:47 -0700)
committerRoland McGrath <roland@hack.frob.com>
Mon, 6 Aug 2012 23:48:36 +0000 (16:48 -0700)
34 files changed:
ChangeLog
bits/dirent.h
bits/typesizes.h
dirent/alphasort.c
dirent/alphasort64.c
dirent/scandir.c
dirent/scandir64.c
dirent/scandirat.c
dirent/scandirat64.c
dirent/versionsort.c
dirent/versionsort64.c
ports/ChangeLog.alpha
ports/sysdeps/unix/sysv/linux/alpha/bits/dirent.h
ports/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
sysdeps/unix/sysv/linux/bits/dirent.h
sysdeps/unix/sysv/linux/s390/bits/typesizes.h
sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
sysdeps/unix/sysv/linux/x86/bits/typesizes.h
sysdeps/unix/sysv/linux/x86_64/x32/alphasort.c [deleted file]
sysdeps/unix/sysv/linux/x86_64/x32/alphasort64.c [deleted file]
sysdeps/unix/sysv/linux/x86_64/x32/scandir.c [deleted file]
sysdeps/unix/sysv/linux/x86_64/x32/scandir64.c [deleted file]
sysdeps/unix/sysv/linux/x86_64/x32/scandirat.c [deleted file]
sysdeps/unix/sysv/linux/x86_64/x32/scandirat64.c [deleted file]
sysdeps/unix/sysv/linux/x86_64/x32/versionsort.c [deleted file]
sysdeps/unix/sysv/linux/x86_64/x32/versionsort64.c [deleted file]
sysdeps/wordsize-64/alphasort.c [deleted file]
sysdeps/wordsize-64/alphasort64.c [deleted file]
sysdeps/wordsize-64/scandir.c [deleted file]
sysdeps/wordsize-64/scandir64.c [deleted file]
sysdeps/wordsize-64/scandirat.c [deleted file]
sysdeps/wordsize-64/scandirat64.c [deleted file]
sysdeps/wordsize-64/versionsort.c [deleted file]
sysdeps/wordsize-64/versionsort64.c [deleted file]

index a631c00..4863547 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,48 @@
 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]:
index ac1928d..5b803c6 100644 (file)
@@ -1,5 +1,5 @@
 /* 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
@@ -33,3 +33,6 @@ struct dirent64
     int d_fileno;
   };
 #endif
+
+/* Inform libc code that these two types are identical.  */
+#define _DIRENT_MATCHES_DIRENT64       1
index 09959f2..c3debd0 100644 (file)
@@ -66,6 +66,9 @@
    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'.  */
index 5939322..6fab7f8 100644 (file)
@@ -1,4 +1,4 @@
-/* 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
@@ -23,3 +31,7 @@ alphasort (const struct dirent **a, const struct dirent **b)
 {
   return strcoll ((*a)->d_name, (*b)->d_name);
 }
+
+#ifdef _DIRENT_MATCHES_DIRENT64
+weak_alias (alphasort, alphasort64)
+#endif
index 4f5c1dd..a4d37ab 100644 (file)
@@ -1,4 +1,4 @@
-/* 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
index 8b0a87b..6dce54d 100644 (file)
@@ -1,5 +1,4 @@
-/* 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
@@ -35,3 +42,7 @@ SCANDIR (dir, namelist, select, cmp)
 {
   return SCANDIRAT (AT_FDCWD, dir, namelist, select, cmp);
 }
+
+#ifdef _DIRENT_MATCHES_DIRENT64
+weak_alias (scandir, scandir64)
+#endif
index 78ac570..bba302f 100644 (file)
@@ -1,4 +1,4 @@
-/* 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
index 13bd574..c2704ba 100644 (file)
@@ -1,5 +1,4 @@
-/* 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>
@@ -141,3 +148,7 @@ SCANDIRAT (dfd, dir, namelist, select, cmp)
   return c.cnt;
 }
 libc_hidden_def (SCANDIRAT)
+
+#ifdef _DIRENT_MATCHES_DIRENT64
+weak_alias (scandirat, scandirat64)
+#endif
index a816ee9..608ca33 100644 (file)
@@ -1,4 +1,4 @@
-/* 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
index 47bda04..ee34659 100644 (file)
@@ -1,4 +1,4 @@
-/* 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
@@ -23,3 +31,7 @@ versionsort (const struct dirent **a, const struct dirent **b)
 {
   return __strverscmp ((*a)->d_name, (*b)->d_name);
 }
+
+#ifdef _DIRENT_MATCHES_DIRENT64
+weak_alias (versionsort, versionsort64)
+#endif
index 5b40e10..dca72e8 100644 (file)
@@ -1,4 +1,4 @@
-/* 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
index b13857f..eb178ea 100644 (file)
@@ -1,5 +1,10 @@
 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.
 
index f146466..487ad15 100644 (file)
@@ -1,4 +1,4 @@
-/* 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
@@ -51,4 +51,7 @@ struct dirent64
 #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 */
index 670c6d1..d7d2a5c 100644 (file)
@@ -67,6 +67,9 @@
    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'.  */
index 5728618..11daabe 100644 (file)
@@ -1,4 +1,4 @@
-/* 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
@@ -50,3 +50,8 @@ struct dirent64
 #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
index bf3d8b7..b630488 100644 (file)
@@ -72,6 +72,9 @@
    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'.  */
index 7b1f191..e55d642 100644 (file)
@@ -66,6 +66,9 @@
    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'.  */
index a477627..397e867 100644 (file)
@@ -78,6 +78,9 @@
    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'.  */
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/alphasort.c b/sysdeps/unix/sysv/linux/x86_64/x32/alphasort.c
deleted file mode 100644 (file)
index 69ec427..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/alphasort.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/alphasort64.c b/sysdeps/unix/sysv/linux/x86_64/x32/alphasort64.c
deleted file mode 100644 (file)
index 6c5b2a1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/alphasort64.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/scandir.c b/sysdeps/unix/sysv/linux/x86_64/x32/scandir.c
deleted file mode 100644 (file)
index 9288ca2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/scandir.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/scandir64.c b/sysdeps/unix/sysv/linux/x86_64/x32/scandir64.c
deleted file mode 100644 (file)
index 6d22057..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/scandir64.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/scandirat.c b/sysdeps/unix/sysv/linux/x86_64/x32/scandirat.c
deleted file mode 100644 (file)
index 5b88993..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/scandirat.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/scandirat64.c b/sysdeps/unix/sysv/linux/x86_64/x32/scandirat64.c
deleted file mode 100644 (file)
index 0d7893d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/scandirat64.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/versionsort.c b/sysdeps/unix/sysv/linux/x86_64/x32/versionsort.c
deleted file mode 100644 (file)
index af5a668..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/versionsort.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/versionsort64.c b/sysdeps/unix/sysv/linux/x86_64/x32/versionsort64.c
deleted file mode 100644 (file)
index fe220c9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/wordsize-64/versionsort64.c>
diff --git a/sysdeps/wordsize-64/alphasort.c b/sysdeps/wordsize-64/alphasort.c
deleted file mode 100644 (file)
index edc4101..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#define alphasort64 rename_alphasort64
-
-#include "../../dirent/alphasort.c"
-
-#undef alphasort64
-
-weak_alias (alphasort, alphasort64)
diff --git a/sysdeps/wordsize-64/alphasort64.c b/sysdeps/wordsize-64/alphasort64.c
deleted file mode 100644 (file)
index 0850913..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in alphasort.c.  */
diff --git a/sysdeps/wordsize-64/scandir.c b/sysdeps/wordsize-64/scandir.c
deleted file mode 100644 (file)
index 9af7e9b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define scandir64 scandir64_renamed
-
-#include "../../dirent/scandir.c"
-
-#undef scandir64
-weak_alias (scandir, scandir64)
diff --git a/sysdeps/wordsize-64/scandir64.c b/sysdeps/wordsize-64/scandir64.c
deleted file mode 100644 (file)
index 3c2c4a1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in scandir.c.  */
diff --git a/sysdeps/wordsize-64/scandirat.c b/sysdeps/wordsize-64/scandirat.c
deleted file mode 100644 (file)
index 02b8fde..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define scandirat64 scandirat64_renamed
-
-#include "../../dirent/scandirat.c"
-
-#undef scandirat64
-weak_alias (scandirat, scandirat64)
diff --git a/sysdeps/wordsize-64/scandirat64.c b/sysdeps/wordsize-64/scandirat64.c
deleted file mode 100644 (file)
index fb93865..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in scandirat.c.  */
diff --git a/sysdeps/wordsize-64/versionsort.c b/sysdeps/wordsize-64/versionsort.c
deleted file mode 100644 (file)
index bb25550..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#define versionsort64 rename_versionsort64
-
-#include "../../dirent/versionsort.c"
-
-#undef versionsort64
-
-weak_alias (versionsort, versionsort64)
diff --git a/sysdeps/wordsize-64/versionsort64.c b/sysdeps/wordsize-64/versionsort64.c
deleted file mode 100644 (file)
index ac6c3c7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* Defined in versionsort.c.  */