diff options
author | Tim Peters <tim.peters@gmail.com> | 2001-03-02 03:28:03 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2001-03-02 03:28:03 (GMT) |
commit | 677898a3918470d718550aee9969cebcd4b1a61b (patch) | |
tree | 27071b6a08d4ab361575a1107bdfdca3d3211da0 /Python | |
parent | fd85a4e600348a854b4979d16a51fe2b2ae30794 (diff) | |
download | cpython-677898a3918470d718550aee9969cebcd4b1a61b.zip cpython-677898a3918470d718550aee9969cebcd4b1a61b.tar.gz cpython-677898a3918470d718550aee9969cebcd4b1a61b.tar.bz2 |
Thanks to Steven Majewski, finally putting MacOS X imports to bed for 2.1b1.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/import.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/Python/import.c b/Python/import.c index 86dd134..5daca1f 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1118,14 +1118,7 @@ case_ok(char *buf, int len, int namelen, char *name) return fss.name[0] >= namelen && strncmp(name, (char *)fss.name+1, namelen) == 0; -/* new-fangled macintosh (macosx) - * - * XXX This seems prone to obscure errors, like suppose someone does - * XXX "import xyz", and in some directory there's both "XYZ.py" and - * XXX "xyz.txt". fopen("xyz.py") will open XYZ.py, but when marching thru - * XXX the directory we'll eventually "succeed" on "xyz.txt" because the - * XXX extension is never checked. - */ +/* new-fangled macintosh (macosx) */ #elif defined(__MACH__) && defined(__APPLE__) && defined(HAVE_DIRENT_H) DIR *dirp; struct dirent *dp; @@ -1148,6 +1141,7 @@ case_ok(char *buf, int len, int namelen, char *name) /* Open the directory and search the entries for an exact match. */ dirp = opendir(dirname); if (dirp) { + char *nameWithExt = buf + len - namelen; while ((dp = readdir(dirp)) != NULL) { const int thislen = #ifdef _DIRENT_HAVE_D_NAMELEN @@ -1156,7 +1150,7 @@ case_ok(char *buf, int len, int namelen, char *name) strlen(dp->d_name); #endif if (thislen >= namelen && - strncmp(dp->d_name, name, namelen) == 0) { + strcmp(dp->d_name, nameWithExt) == 0) { (void)closedir(dirp); return 1; /* Found */ } |