diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c index 0aa177340b61cb9312bf3a7ab319750a9ef631d5..9c6a1dbda86e51d730a6937c45a87201406cea13 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.58 1998/07/15 23:26:56 hubbe Exp $"); +RCSID("$Id: efuns.c,v 1.59 1998/08/06 17:17:01 grubba Exp $"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> @@ -495,6 +495,7 @@ void f_get_dir(INT32 args) (unsigned int)d); #endif /* READDIR_DEBUG */ if (err == -1) { + /* Solaris readdir_r returns -1, and sets errno. */ err = errno; } #ifdef READDIR_DEBUG @@ -502,8 +503,10 @@ void f_get_dir(INT32 args) path, err); #endif /* READDIR_DEBUG */ /* Solaris readdir_r seems to set errno to ENOENT sometimes. + * + * AIX readdir_r seems to set errno to EBADF at end of dir. */ - if (err == ENOENT) { + if ((err == ENOENT) || (err == EBADF)) { err = 0; } break;