OSDN Git Service

revert changes
authorYoshinori Sato <ysato@users.sourceforge.jp>
Sat, 9 Jan 2016 06:53:55 +0000 (15:53 +0900)
committerYoshinori Sato <ysato@users.sourceforge.jp>
Sat, 9 Jan 2016 06:53:55 +0000 (15:53 +0900)
libc/misc/dirent/readdir.c
libc/misc/dirent/readdir64.c

index b5a23bb..7517106 100644 (file)
 #include <stddef.h>
 #include "dirstream.h"
 
-#if !defined __ARCH_HAS_DEPRECATED_SYSCALLS__
+#ifndef __READDIR
 # define __READDIR readdir
 # define __DIRENT_TYPE struct dirent
 # define __GETDENTS __getdents
+#endif
+
+__DIRENT_TYPE *__READDIR(DIR * dir)
+{
+       ssize_t bytes;
+       __DIRENT_TYPE *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 = __GETDENTS(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 = (__DIRENT_TYPE *) (((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;
 
-# include "__readdir.c"
+           /* Skip deleted files.  */
+       } while (de->d_ino == 0);
 
+all_done:
+       __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
+       return de;
+}
 libc_hidden_def(__READDIR)
-# if WORDSIZE == 64
+#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
 strong_alias_untyped(readdir,readdir64)
 libc_hidden_def(readdir64)
-# endif
 #endif
index 962c35d..17577a7 100644 (file)
@@ -6,17 +6,11 @@
 
 #include <_lfs_64.h>
 #include <dirent.h>
-#include <errno.h>
-#define __need_NULL
-#include <stddef.h>
-#include "dirstream.h"
 
-#define __READDIR readdir64
-#define __DIRENT_TYPE struct dirent64
-#define __GETDENTS __getdents64
+#if __WORDSIZE != 64
+# define __READDIR readdir64
+# define __DIRENT_TYPE struct dirent64
+# define __GETDENTS __getdents64
 
-# include "__readdir.c"
-
-libc_hidden_def(__READDIR)
-strong_alias_untyped(readdir64,readdir)
-libc_hidden_def(readdir)
+# include "readdir.c"
+#endif