From d7b568ac4d238281d6ac55b6d7b820c64250a09d Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Sat, 11 Aug 2001 23:18:55 +0000 Subject: test_glob found a nasty bug in GUSI opendir(): it will not fail when called on files, but in stead open the parent directory! We now explicitly test for the argument being a directory and simulate ENOTDIR otherwise. --- Mac/Modules/macmodule.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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 -- cgit v0.12