diff options
author | Jeff Sturm <jsturm@one-point.com> | 2001-06-01 04:04:10 +0000 |
---|---|---|
committer | Jeff Sturm <jsturm@gcc.gnu.org> | 2001-06-01 04:04:10 +0000 |
commit | e2f3946854108340828936a03277cc2ffe145672 (patch) | |
tree | bed640996f4d1759584fa993c486608738f06a4c /libjava | |
parent | 195590126aec10f823cb1562f45fa03a0931e004 (diff) | |
download | gcc-e2f3946854108340828936a03277cc2ffe145672.zip gcc-e2f3946854108340828936a03277cc2ffe145672.tar.gz gcc-e2f3946854108340828936a03277cc2ffe145672.tar.bz2 |
natFile.cc (get_entry): Removed functions.
* 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.
From-SVN: r42767
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 6 | ||||
-rw-r--r-- | libjava/java/io/natFile.cc | 34 |
2 files changed, 15 insertions, 25 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 3339988..a86df02 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 6fa46c0..82674fc 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] == '.' |