From 7962cb627089f5fd1feee6881e20ed4270308c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Thu, 2 Jul 1998 21:49:59 +0200 Subject: [PATCH] Fixed a few bugs in the POSIX readdir_r() handling. Rev: src/modules/files/efuns.c:1.55 --- src/modules/files/efuns.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c index 55cb1a7d01..ab19180037 100644 --- a/src/modules/files/efuns.c +++ b/src/modules/files/efuns.c @@ -22,7 +22,7 @@ #include "file_machine.h" #include "file.h" -RCSID("$Id: efuns.c,v 1.54 1998/07/02 18:59:29 grubba Exp $"); +RCSID("$Id: efuns.c,v 1.55 1998/07/02 19:49:59 grubba Exp $"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> @@ -456,7 +456,11 @@ void f_get_dir(INT32 args) if (!d) { /* Solaris readdir_r seems to set errno to ENOENT sometimes. */ - err = (errno == ENOENT)?0:errno; + if (errno == ENOENT) { + err = 0; + } else { + err = errno; + } break; } #elif defined(HAVE_HPUX_READDIR_R) @@ -477,7 +481,16 @@ void f_get_dir(INT32 args) /* POSIX readdir_r returns 0 on success, and ERRNO on failure. * at end of dir it sets the third arg to NULL. */ + d = NULL; if ((err = readdir_r(dir, tmp, &d)) || !d) { + if (err == -1) { + err = errno; + } + /* Solaris readdir_r seems to set errno to ENOENT sometimes. + */ + if (err == ENOENT) { + err = 0; + } break; } #else @@ -498,7 +511,7 @@ void f_get_dir(INT32 args) } THREADS_DISALLOW(); if ((!d) && err) { - error("get_dir(): readdir_r() failed: %d\n", err); + error("get_dir(): readdir_r(\"%s\") failed: %d\n", path, err); } for(e=0;e<num_files;e++) { -- GitLab