mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
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:
parent
bcd1e3a453
commit
21cbf5f896
1 changed files with 18 additions and 14 deletions
|
@ -3233,24 +3233,11 @@ NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
|
||||||
PyErr_SetString(PyExc_ImportError, "empty pathname");
|
PyErr_SetString(PyExc_ImportError, "empty pathname");
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
|
#ifndef MS_WINDOWS
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
rv = stat(path, &statbuf);
|
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);
|
PyMem_Free(path);
|
||||||
if (rv == 0) {
|
if (rv == 0) {
|
||||||
/* it exists */
|
/* it exists */
|
||||||
|
@ -3261,6 +3248,23 @@ NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
|
||||||
return -1;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue