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.

This commit is contained in:
Jack Jansen 2001-08-11 23:18:55 +00:00
parent b5982221bb
commit d7b568ac4d
1 changed files with 18 additions and 0 deletions

View File

@ -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