* natFile.cc (get_entry): Removed functions.
authorjsturm <jsturm@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Jun 2001 04:04:10 +0000 (04:04 +0000)
committerjsturm <jsturm@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Jun 2001 04:04:10 +0000 (04:04 +0000)
(performList): Call readdir or readdir_r if HAVE_READDIR_R defined.
Allocate enough storage for d_name if using readdir_r.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42767 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/io/natFile.cc

index 3339988..a86df02 100644 (file)
@@ -1,3 +1,9 @@
+2001-05-31  Jeff Sturm  <jsturm@one-point.com>
+
+       * natFile.cc (get_entry): Removed functions.
+       (performList): Call readdir or readdir_r if HAVE_READDIR_R defined.
+       Allocate enough storage for d_name if using readdir_r.
+
 2001-05-31  Tom Tromey  <tromey@redhat.com>
 
        * java/io/natFileDescriptorPosix.cc (open): Allocate buffer to
index 6fa46c0..82674fc 100644 (file)
@@ -130,29 +130,6 @@ java::io::File::isAbsolute (void)
   return path->charAt(0) == '/';
 }
 
-#ifdef HAVE_DIRENT_H
-#if defined(__JV_POSIX_THREADS__) && defined(HAVE_READDIR_R)
-
-static struct dirent *
-get_entry (DIR *dir, struct dirent *e)
-{
-  struct dirent *r;
-  if (readdir_r (dir, e, &r) || r == NULL)
-    return NULL;
-  return e;
-}
-
-#else /* defined(__JV_POSIX_THREADS__) && defined(HAVE_READDIR_R) */
-
-static struct dirent *
-get_entry (DIR *dir, struct dirent *)
-{
-  return readdir (dir);
-}
-
-#endif /* defined(__JV_POSIX_THREADS__) && defined(HAVE_READDIR_R) */
-#endif /* HAVE_DIRENT_H */
-
 jobjectArray
 java::io::File::performList (java::io::FilenameFilter *filter, 
                             java::io::FileFilter *fileFilter, 
@@ -168,9 +145,16 @@ java::io::File::performList (java::io::FilenameFilter *filter,
   if (! dir)
     return NULL;
 
+
   java::util::ArrayList *list = new java::util::ArrayList ();
-  struct dirent *d, d2;
-  while ((d = get_entry (dir, &d2)) != NULL)
+  struct dirent *d;
+#ifdef HAVE_READDIR_R
+  int name_max = pathconf (buf, _PC_NAME_MAX);
+  char dbuf[sizeof (struct dirent) + name_max + 1];
+  while (readdir_r (dir, (struct dirent *) dbuf, &d) == 0 && d != NULL)
+#else /* HAVE_READDIR_R */
+  while ((d = readdir (dir)) != NULL)
+#endif /* HAVE_READDIR_R */
     {
       // Omit "." and "..".
       if (d->d_name[0] == '.'