[Python-checkins] r68457 - python/trunk/Python/import.c
kristjan.jonsson
python-checkins at python.org
Fri Jan 9 21:11:00 CET 2009
Author: kristjan.jonsson
Date: Fri Jan 9 21:10:59 2009
New Revision: 68457
Log:
Issue 3677: Fix import from UNC paths on Windows.
Modified:
python/trunk/Python/import.c
Modified: python/trunk/Python/import.c
==============================================================================
--- python/trunk/Python/import.c (original)
+++ python/trunk/Python/import.c Fri Jan 9 21:10:59 2009
@@ -3198,24 +3198,11 @@
return -1;
} else {
#ifndef RISCOS
+#ifndef MS_WINDOWS
struct stat statbuf;
int rv;
rv = stat(path, &statbuf);
-#ifdef MS_WINDOWS
- /* MS Windows stat() chokes on paths like C:\path\. Try to
- * recover *one* time by stripping off a trailing slash or
- * backslash. http://bugs.python.org/issue1293
- */
- if (rv != 0 && pathlen <= MAXPATHLEN &&
- (path[pathlen-1] == '/' || path[pathlen-1] == '\\')) {
- char mangled[MAXPATHLEN+1];
-
- strcpy(mangled, path);
- mangled[pathlen-1] = '\0';
- rv = stat(mangled, &statbuf);
- }
-#endif
if (rv == 0) {
/* it exists */
if (S_ISDIR(statbuf.st_mode)) {
@@ -3225,7 +3212,24 @@
return -1;
}
}
-#else
+#else /* MS_WINDOWS */
+ DWORD rv;
+ /* see issue1293 and issue3677:
+ * stat() on Windows doesn't recognise paths like
+ * "e:\\shared\\" and "\\\\whiterab-c2znlh\\shared" as dirs.
+ */
+ rv = GetFileAttributesA(path);
+ if (rv != INVALID_FILE_ATTRIBUTES) {
+ /* it exists */
+ if (rv & FILE_ATTRIBUTE_DIRECTORY) {
+ /* it's a directory */
+ PyErr_SetString(PyExc_ImportError,
+ "existing directory");
+ return -1;
+ }
+ }
+#endif
+#else /* RISCOS */
if (object_exists(path)) {
/* it exists */
if (isdir(path)) {
More information about the Python-checkins
mailing list