From: Sascha Schumann Date: Fri, 27 Apr 2001 11:14:48 +0000 (+0000) Subject: Make old readdir_r code compatible with HPUX and Solaris. X-Git-Tag: php-4.0.6RC1~296 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=453b4c73626dfb1f8c4726e6391d1f24afc462cd;p=php Make old readdir_r code compatible with HPUX and Solaris. --- diff --git a/main/reentrancy.c b/main/reentrancy.c index 027bb8c8a4..a6a7cc563a 100644 --- a/main/reentrancy.c +++ b/main/reentrancy.c @@ -99,20 +99,22 @@ PHPAPI int php_readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) { #if defined(HAVE_OLD_READDIR_R) - int ret; + int ret = 0; - errno = 0; - - ret = readdir_r(dirp, entry); - - if (!ret || errno != 0) { + /* We cannot rely on the return value of readdir_r + as it differs between various platforms + (HPUX returns 0 on success whereas Solaris returns non-zero) + */ + entry->d_name[0] = '\0'; + readdir_r(dirp, entry); + + if (entry->d_name[0] == '\0') { *result = NULL; + ret = errno; } else { *result = entry; } - - return errno; - + return ret; #else struct dirent *ptr; int ret = 0;