1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-20 04:50:55 -07:00

(directory_files_internal): Handle EAGAIN more

efficiently.
This commit is contained in:
Gerd Moellmann 2001-03-08 14:16:36 +00:00
parent 129004d3cb
commit f69f9da11e

View file

@ -133,6 +133,7 @@ directory_files_internal_unwind (dh)
/* Function shared by Fdirectory_files and Fdirectory_files_and_attributes.
When ATTRS is zero, return a list of directory filenames; when
non-zero, return a list of directory filenames and their attributes. */
Lisp_Object
directory_files_internal (directory, full, match, nosort, attrs)
Lisp_Object directory, full, match, nosort;
@ -209,9 +210,19 @@ directory_files_internal (directory, full, match, nosort, attrs)
#endif /* not VMS */
/* Loop reading blocks until EOF or error. */
errno = 0;
while ((dp = readdir (d)) != NULL)
for (;;)
{
errno = 0;
dp = readdir (d);
#ifdef EAGAIN
if (dp == NULL && errno == EAGAIN)
continue;
#endif
if (dp == NULL)
break;
if (DIRENTRY_NONEMPTY (dp))
{
int len;
@ -299,9 +310,6 @@ directory_files_internal (directory, full, match, nosort, attrs)
}
retry_p = 0;
#ifdef EAGAIN
retry_p |= errno == EAGAIN;
#endif
#ifdef EINTR
retry_p |= errno == EINTR;
#endif