diff options
author | Roland McGrath <roland@gnu.org> | 1998-12-20 19:13:11 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1998-12-20 19:13:11 +0000 |
commit | 6ac73ea734be9f238e65a7df07db88b49851526a (patch) | |
tree | fe23265a702a41fdbbd9dcaf3431f14bd730bbcb | |
parent | c5720a93963d3c47fdac1d41b0e2629e927ca63b (diff) | |
download | glibc-6ac73ea734be9f238e65a7df07db88b49851526a.tar.gz glibc-6ac73ea734be9f238e65a7df07db88b49851526a.tar.xz glibc-6ac73ea734be9f238e65a7df07db88b49851526a.zip |
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-- | ChangeLog | 17 | ||||
-rw-r--r-- | bits/mman.h | 3 | ||||
-rw-r--r-- | stdio/stdio.h | 9 | ||||
-rw-r--r-- | sysdeps/generic/bits/mman.h | 3 | ||||
-rw-r--r-- | sysdeps/mach/hurd/bits/dirent.h | 67 | ||||
-rw-r--r-- | sysdeps/mach/hurd/readdir64.c | 51 | ||||
-rw-r--r-- | sysdeps/mach/hurd/readdir64_r.c | 57 | ||||
-rw-r--r-- | sysdeps/unix/bsd/bsd4.4/bits/dirent.h | 18 |
8 files changed, 40 insertions, 185 deletions
diff --git a/ChangeLog b/ChangeLog index 5d74ad0363..1796eacea4 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 0afdf202a1..99e3bcd1e8 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 a48a07fe6d..90457271a5 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 0afdf202a1..99e3bcd1e8 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 6609fde8ea..0000000000 --- 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 aed5e0199a..0000000000 --- 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 bd00b0eb08..0000000000 --- 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 e29dac4806..cf1f72c997 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 |