diff options
Diffstat (limited to 'Mac/Modules/macmodule.c')
-rw-r--r-- | Mac/Modules/macmodule.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Mac/Modules/macmodule.c b/Mac/Modules/macmodule.c index 7735ab3..766722f 100644 --- a/Mac/Modules/macmodule.c +++ b/Mac/Modules/macmodule.c @@ -311,6 +311,24 @@ mac_listdir(self, args) struct dirent *ep; if (!PyArg_ParseTuple(args, "s", &name)) return NULL; +#ifdef USE_GUSI + /* Work around a bug in GUSI: if you opendir() a file it will + ** actually opendir() the parent directory. + */ + { + struct stat stb; + int res; + + res = stat(name, &stb); + if ( res < 0 ) + return mac_error(); + if (!S_ISDIR(stb.st_mode) ) { + errno = ENOTDIR; + return mac_error(); + } + } +#endif + Py_BEGIN_ALLOW_THREADS if ((dirp = opendir(name)) == NULL) { Py_BLOCK_THREADS |