diff options
author | Peter S. Mazinger <ps.m@gmx.net> | 2011-03-16 21:07:18 +0100 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2012-06-15 14:00:25 +0200 |
commit | bef4efb18c54f4b2285557a1b5a5a037f3dce019 (patch) | |
tree | cc51a00e5200f2441e5cf3b9e9d2088726029e0d /libc/misc/dirent/readdir64.c | |
parent | e50a776d7615173ede86f5f492bed5d2b75214ec (diff) |
scandir,readdir[_t]: use one common source for X() and X64()
Since the sources differ only minimally, use only scandir.c,readdir[_t].c
and redefine the used functions accordingly.
Use a strong_alias instead of compiling *64.c if __WORDSIZE = 64
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/misc/dirent/readdir64.c')
-rw-r--r-- | libc/misc/dirent/readdir64.c | 52 |
1 files changed, 6 insertions, 46 deletions
diff --git a/libc/misc/dirent/readdir64.c b/libc/misc/dirent/readdir64.c index 1264c38b1..17577a7b6 100644 --- a/libc/misc/dirent/readdir64.c +++ b/libc/misc/dirent/readdir64.c @@ -5,52 +5,12 @@ */ #include <_lfs_64.h> - -#include <errno.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> #include <dirent.h> -#include "dirstream.h" - -struct dirent64 *readdir64(DIR * dir) -{ - ssize_t bytes; - struct dirent64 *de; - - if (!dir) { - __set_errno(EBADF); - return NULL; - } - - __UCLIBC_MUTEX_LOCK(dir->dd_lock); - - do { - if (dir->dd_size <= dir->dd_nextloc) { - /* read dir->dd_max bytes of directory entries. */ - bytes = __getdents64(dir->dd_fd, dir->dd_buf, dir->dd_max); - if (bytes <= 0) { - de = NULL; - goto all_done; - } - dir->dd_size = bytes; - dir->dd_nextloc = 0; - } - - de = (struct dirent64 *) (((char *) dir->dd_buf) + dir->dd_nextloc); - - /* Am I right? H.J. */ - dir->dd_nextloc += de->d_reclen; - - /* We have to save the next offset here. */ - dir->dd_nextoff = de->d_off; - - /* Skip deleted files. */ - } while (de->d_ino == 0); -all_done: - __UCLIBC_MUTEX_UNLOCK(dir->dd_lock); +#if __WORDSIZE != 64 +# define __READDIR readdir64 +# define __DIRENT_TYPE struct dirent64 +# define __GETDENTS __getdents64 - return de; -} -libc_hidden_def(readdir64) +# include "readdir.c" +#endif |