summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mac/Modules/macmodule.c18
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