tweaked version of suggested patch
Anton Berezin [Thu, 29 Oct 1998 14:48:54 +0000 (15:48 +0100)]
Message-ID: <86yapzv5q1.fsf@lion.plab.ku.dk>
Subject: [PATCH 5.005_52] One more problem with win32_stat and MSVC

p4raw-id: //depot/perl@2147

win32/win32.c

index 5f7d487..53c9713 100644 (file)
@@ -911,8 +911,17 @@ win32_stat(const char *path, struct stat *buffer)
            return 0;
        }
     }
-#ifdef __BORLANDC__
     else {
+       if (l == 3 && path[l-2] == ':'
+           && (path[l-1] == '\\' || path[l-1] == '/'))
+       {
+           /* The drive can be inaccessible, some _stat()s are buggy */
+           if (!GetVolumeInformation(path,NULL,0,NULL,NULL,NULL,NULL,0)) {
+               errno = ENOENT;
+               return -1;
+           }
+       }
+#ifdef __BORLANDC__
        if (S_ISDIR(buffer->st_mode))
            buffer->st_mode |= S_IWRITE | S_IEXEC;
        else if (S_ISREG(buffer->st_mode)) {
@@ -929,8 +938,8 @@ win32_stat(const char *path, struct stat *buffer)
            else
                buffer->st_mode &= ~S_IEXEC;
        }
-    }
 #endif
+    }
     return res;
 }