From 2290ef4084d0fbe31ed055e3d5ae9448e44066f4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Thu, 6 Aug 1998 19:17:01 +0200
Subject: [PATCH] readdir_r() now works on AIX.

Rev: src/modules/files/efuns.c:1.59
---
 src/modules/files/efuns.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c
index 0aa177340b..9c6a1dbda8 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;
-- 
GitLab