]> granicus.if.org Git - php/commitdiff
Make old readdir_r code compatible with HPUX and Solaris.
authorSascha Schumann <sas@php.net>
Fri, 27 Apr 2001 11:14:48 +0000 (11:14 +0000)
committerSascha Schumann <sas@php.net>
Fri, 27 Apr 2001 11:14:48 +0000 (11:14 +0000)
main/reentrancy.c

index 027bb8c8a4f645c045b85b248d708cdda6eb3323..a6a7cc563aae1e5b7fc5775d7619ace20225b94c 100644 (file)
@@ -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;