aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1998-12-20 19:13:11 +0000
committerRoland McGrath <roland@gnu.org>1998-12-20 19:13:11 +0000
commit6ac73ea734be9f238e65a7df07db88b49851526a (patch)
treefe23265a702a41fdbbd9dcaf3431f14bd730bbcb
parentc5720a93963d3c47fdac1d41b0e2629e927ca63b (diff)
downloadglibc-6ac73ea734be9f238e65a7df07db88b49851526a.zip
glibc-6ac73ea734be9f238e65a7df07db88b49851526a.tar.gz
glibc-6ac73ea734be9f238e65a7df07db88b49851526a.tar.bz2
1998-12-06 Mark Kettenis <kettenis@phys.uva.nl>
Reverse the change of 1998-04-22. Providing a struct dirent with different members when __USE_FILE_OFFSET64 is defined is asking for trouble. Instead add the necessary LFS magic to the 4.4BSD header. * sysdeps/unix/bsd/bsd4.4/bits/dirent.h: Add LFS definitions. * sysdeps/mach/hurd/bits/dirent.h: Removed. * sysdeps/mach/hurd/readdir64.c: Removed. * sysdeps/mach/hurd/readdir64_r.c: Removed. * sysdeps/generic/bits/mman.h [__USE_MISC] (MAP_ANONYMOUS): Define as alias for MAP_ANON. * stdio/stdio.h (sys_errlist, sys_nerr, _sys_errlist, _sys_nerr): Remove decls. They don't exist at all on the Hurd.
-rw-r--r--ChangeLog17
-rw-r--r--bits/mman.h3
-rw-r--r--stdio/stdio.h9
-rw-r--r--sysdeps/generic/bits/mman.h3
-rw-r--r--sysdeps/mach/hurd/bits/dirent.h67
-rw-r--r--sysdeps/mach/hurd/readdir64.c51
-rw-r--r--sysdeps/mach/hurd/readdir64_r.c57
-rw-r--r--sysdeps/unix/bsd/bsd4.4/bits/dirent.h18
8 files changed, 40 insertions, 185 deletions
diff --git a/ChangeLog b/ChangeLog
index 5d74ad0..1796eac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
+1998-12-06 Mark Kettenis <kettenis@phys.uva.nl>
+
+ Reverse the change of 1998-04-22. Providing a struct dirent with
+ different members when __USE_FILE_OFFSET64 is defined is asking
+ for trouble. Instead add the necessary LFS magic to the 4.4BSD
+ header.
+ * sysdeps/unix/bsd/bsd4.4/bits/dirent.h: Add LFS definitions.
+ * sysdeps/mach/hurd/bits/dirent.h: Removed.
+ * sysdeps/mach/hurd/readdir64.c: Removed.
+ * sysdeps/mach/hurd/readdir64_r.c: Removed.
+
1998-12-20 Roland McGrath <roland@baalperazim.frob.com>
+ * sysdeps/generic/bits/mman.h [__USE_MISC] (MAP_ANONYMOUS): Define as
+ alias for MAP_ANON.
+
+ * stdio/stdio.h (sys_errlist, sys_nerr, _sys_errlist, _sys_nerr):
+ Remove decls. They don't exist at all on the Hurd.
+
* sunrpc/svc_unix.c, sunrpc/clnt_unix.c: Avoid using `struct cmsghdr'
and `struct ucred' #ifndef SCM_CREDENTIALS.
diff --git a/bits/mman.h b/bits/mman.h
index 0afdf20..99e3bcd 100644
--- a/bits/mman.h
+++ b/bits/mman.h
@@ -41,6 +41,9 @@
# define MAP_FILE 0x0001 /* Mapped from a file or device. */
# define MAP_ANON 0x0002 /* Allocated from anonymous virtual memory. */
# define MAP_TYPE 0x000f /* Mask for type field. */
+# ifdef __USE_MISC
+# define MAP_ANONYMOUS MAP_ANON /* Linux name. */
+# endif
#endif
/* Sharing types (must choose one and only one of these). */
diff --git a/stdio/stdio.h b/stdio/stdio.h
index a48a07f..9045727 100644
--- a/stdio/stdio.h
+++ b/stdio/stdio.h
@@ -745,15 +745,6 @@ extern int ferror_unlocked __P ((FILE *__stream));
/* Print a message describing the meaning of the value of errno. */
extern void perror __P ((__const char *__s));
-#ifdef __USE_BSD
-extern int sys_nerr;
-extern const char *const sys_errlist[];
-#endif
-#ifdef __USE_GNU
-extern int _sys_nerr;
-extern const char *const _sys_errlist[];
-#endif
-
#ifdef __USE_POSIX
/* Return the system file descriptor for STREAM. */
diff --git a/sysdeps/generic/bits/mman.h b/sysdeps/generic/bits/mman.h
index 0afdf20..99e3bcd 100644
--- a/sysdeps/generic/bits/mman.h
+++ b/sysdeps/generic/bits/mman.h
@@ -41,6 +41,9 @@
# define MAP_FILE 0x0001 /* Mapped from a file or device. */
# define MAP_ANON 0x0002 /* Allocated from anonymous virtual memory. */
# define MAP_TYPE 0x000f /* Mask for type field. */
+# ifdef __USE_MISC
+# define MAP_ANONYMOUS MAP_ANON /* Linux name. */
+# endif
#endif
/* Sharing types (must choose one and only one of these). */
diff --git a/sysdeps/mach/hurd/bits/dirent.h b/sysdeps/mach/hurd/bits/dirent.h
deleted file mode 100644
index 6609fde..0000000
--- a/sysdeps/mach/hurd/bits/dirent.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Directory entry structure `struct dirent'. Hurd version.
- Copyright (C) 1996, 1997, 1998 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
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef _DIRENT_H
-# error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
-#endif
-
-#ifndef __USE_FILE_OFFSET64
-/* The old BSD4.4-compatible struct dirent. */
-struct dirent
- {
- __ino_t d_ino; /* File serial number. */
- unsigned short int d_reclen; /* Length of the whole `struct dirent'. */
- unsigned char d_type; /* File type, possibly unknown. */
- unsigned char d_namlen; /* Length of the file name. */
-
- /* Only this member is in the POSIX standard. */
- char d_name[1]; /* File name (actually longer). */
- };
-
-#else
-/* Linux-style 64-bit struct dirent. */
-struct dirent
- {
- __ino64_t d_ino;
- __off64_t d_off;
- unsigned short int d_reclen;
- unsigned char d_type;
- char d_name[256]; /* We must not include limits.h! */
- };
-#endif
-
-#ifdef __USE_LARGEFILE64
-/* Same as above (Linux-style 64-bit struct dirent). */
-struct dirent64
- {
- __ino64_t d_ino;
- __off64_t d_off;
- unsigned short int d_reclen;
- unsigned char d_type;
- char d_name[256]; /* We must not include limits.h! */
- };
-#endif
-
-#define d_fileno d_ino /* Backwards compatibility. */
-
-/* These definitions are accurate for neither the 32-bit nor the
- 64-bit structures, but at least they are compatible. */
-#undef _DIRENT_HAVE_D_NAMLEN
-#define _DIRENT_HAVE_D_RECLEN 1
-#define _DIRENT_HAVE_D_TYPE 1
diff --git a/sysdeps/mach/hurd/readdir64.c b/sysdeps/mach/hurd/readdir64.c
deleted file mode 100644
index aed5e01..0000000
--- a/sysdeps/mach/hurd/readdir64.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 1998 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
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include <errno.h>
-#include <limits.h>
-#include <stddef.h>
-#include <string.h>
-#include <dirent.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-/* Read a directory entry from DIRP. */
-struct dirent64 *
-__readdir64 (DIR *dirp)
-{
- struct dirent *dp;
- static struct dirent64 dent;
-
- /* XXX the new __dir_readdir64 RPC is not yet implemented */
-
- /* If __dir_readdir64 failed, then fall back on the old implementation */
- dp = readdir (dirp);
- if (!dp)
- return NULL;
-
- /* Return a struct dirent64, converted from the 32-bit value. */
- memset (&dent, 0, sizeof (dent));
- dent.d_reclen = sizeof (dent);
-
- dent.d_ino = dp->d_fileno;
- dent.d_type = dp->d_type;
- memcpy (dent.d_name, dp->d_name, dp->d_namlen);
-
- return &dent;
-}
-weak_alias (__readdir64, readdir64)
diff --git a/sysdeps/mach/hurd/readdir64_r.c b/sysdeps/mach/hurd/readdir64_r.c
deleted file mode 100644
index bd00b0e..0000000
--- a/sysdeps/mach/hurd/readdir64_r.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (C) 1998 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
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include <errno.h>
-#include <limits.h>
-#include <stddef.h>
-#include <string.h>
-#include <dirent.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-/* Read a directory entry from DIRP. */
-int
-__readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result)
-{
- struct dirent ent32, *res32;
-
- /* XXX the new __dir_readdir64 RPC is not yet implemented */
-
- /* If __dir_readdir64 failed, then fall back on the old implementation */
- if (readdir_r (dirp, &ent32, &res32))
- return -1;
-
- if (!res32)
- {
- /* End of directory. */
- *result = 0;
- return 0;
- }
-
- /* Convert our result from the 32-bit value. */
- memset (entry, 0, sizeof (*entry));
- entry->d_reclen = sizeof (*entry);
-
- entry->d_ino = res32->d_fileno;
- entry->d_type = res32->d_type;
- memcpy (entry->d_name, res32->d_name, res32->d_namlen);
-
- *result = entry;
- return 0;
-}
-weak_alias (__readdir64_r, readdir64_r)
diff --git a/sysdeps/unix/bsd/bsd4.4/bits/dirent.h b/sysdeps/unix/bsd/bsd4.4/bits/dirent.h
index e29dac4..cf1f72c 100644
--- a/sysdeps/unix/bsd/bsd4.4/bits/dirent.h
+++ b/sysdeps/unix/bsd/bsd4.4/bits/dirent.h
@@ -1,5 +1,5 @@
/* Directory entry structure `struct dirent'. 4.4BSD version.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998 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
@@ -23,7 +23,11 @@
struct dirent
{
+#ifndef __USE_FILE_OFFSET64
__ino_t d_fileno; /* File serial number. */
+#else
+ __ino64_t d_fileno;
+#endif
unsigned short int d_reclen; /* Length of the whole `struct dirent'. */
unsigned char d_type; /* File type, possibly unknown. */
unsigned char d_namlen; /* Length of the file name. */
@@ -32,6 +36,18 @@ struct dirent
char d_name[1]; /* File name (actually longer). */
};
+#ifdef __USE_LARGEFILE64
+struct dirent64
+ {
+ __ino64_t d_fileno;
+ unsigned short int d_reclen;
+ unsigned char d_type;
+ unsigned char d_namlen;
+
+ char d_name[1];
+ };
+#endif
+
#define _DIRENT_HAVE_D_RECLEN 1
#define _DIRENT_HAVE_D_NAMLEN 1
#define _DIRENT_HAVE_D_TYPE 1