From: jsturm Date: Fri, 1 Jun 2001 04:04:10 +0000 (+0000) Subject: * natFile.cc (get_entry): Removed functions. X-Git-Tag: upstream/4.9.2~94065 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e25a5799ba8a9f512c4cc57c7b27b2c87672bee1;p=platform%2Fupstream%2Flinaro-gcc.git * 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 --- 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 + + * 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 * 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] == '.'