aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorjsturm <jsturm@138bc75d-0d04-0410-961f-82ee72b054a4>2001-06-01 04:04:10 +0000
committerjsturm <jsturm@138bc75d-0d04-0410-961f-82ee72b054a4>2001-06-01 04:04:10 +0000
commite25a5799ba8a9f512c4cc57c7b27b2c87672bee1 (patch)
treebed640996f4d1759584fa993c486608738f06a4c /libjava
parent0787c6870f2f96b198419d738dc25be89dad5d55 (diff)
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42767 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/java/io/natFile.cc34
2 files changed, 15 insertions, 25 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 33399886542..a86df0242d9 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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
diff --git a/libjava/java/io/natFile.cc b/libjava/java/io/natFile.cc
index 6fa46c00410..82674fcfae6 100644
--- a/libjava/java/io/natFile.cc
+++ b/libjava/java/io/natFile.cc
@@ -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] == '.'