Merged revisions 68457 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r68457 | kristjan.jonsson | 2009-01-10 05:10:59 +0900 | 1 line

  Issue 3677:  Fix import from UNC paths on Windows.
........
This commit is contained in:
Hirokazu Yamamoto 2009-01-23 07:23:03 +00:00
parent bcd1e3a453
commit 21cbf5f896

View File

@ -3233,24 +3233,11 @@ NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
PyErr_SetString(PyExc_ImportError, "empty pathname");
return -1;
} else {
#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
PyMem_Free(path);
if (rv == 0) {
/* it exists */
@ -3261,6 +3248,23 @@ NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
return -1;
}
}
#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
}
return 0;
}