diff options
Diffstat (limited to 'sysdeps/mach/hurd/readdir.c')
-rw-r--r-- | sysdeps/mach/hurd/readdir.c | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/sysdeps/mach/hurd/readdir.c b/sysdeps/mach/hurd/readdir.c deleted file mode 100644 index 147a0bc469..0000000000 --- a/sysdeps/mach/hurd/readdir.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright (C) 1993-2017 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> -#include <unistd.h> -#include <endian.h> -#include <assert.h> - -/* Read a directory entry from DIRP. */ -struct dirent * -__readdir (DIR *dirp) -{ - struct dirent64 *entry64 = __readdir64 (dirp); - - if (sizeof (struct dirent64) == sizeof (struct dirent)) - /* We should in fact just be an alias to readdir64 on this machine. */ - return (struct dirent *) entry64; - - /* These are all compile-time constants. We know that d_ino is the first - member and that the layout of the following members matches exactly in - both structures. */ - assert (offsetof (struct dirent, d_ino) == 0); - assert (offsetof (struct dirent64, d_ino) == 0); -# define MATCH(memb) \ - assert (offsetof (struct dirent64, memb) - sizeof (entry64->d_ino) \ - == offsetof (struct dirent, memb) - sizeof (ino_t)) - MATCH (d_reclen); - MATCH (d_type); - MATCH (d_namlen); -# undef MATCH - - if (entry64 == NULL) - return NULL; - - struct dirent *const entry = ((void *) (&entry64->d_ino + 1) - - sizeof entry->d_ino); - const ino_t d_ino = entry64->d_ino; - if (d_ino != entry64->d_ino) - { - __set_errno (EOVERFLOW); - return NULL; - } -# if BYTE_ORDER != BIG_ENDIAN /* We just skipped over the zero high word. */ - entry->d_ino = d_ino; /* ... or the nonzero low word, swap it. */ -# endif - entry->d_reclen -= sizeof entry64->d_ino - sizeof entry->d_ino; - return entry; -} - -weak_alias (__readdir, readdir) |