First ....\Python\bltinmodule.c(595) : warning C4013: 'S_ISDIR' undefined; assuming extern returning int on the last line here: /* Test for existence or directory. */ if (!stat(filename, &s)) { if (S_ISDIR(s.st_mode)) and later it fails to link cuz S_ISDIR doesn't exist. Now bltinmodule.c doesn't even include <sys/stat.h>, so I don't know why we'd *expect* the new code to work (although I know why *I* would expect it to work <wink> -- see below). getpath.c does import sys/stat.h, then hides this stuff 100 lines later: #ifndef S_ISREG #define S_ISREG(x) (((x) & S_IFMT) == S_IFREG) #endif #ifndef S_ISDIR #define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR) #endif import.c doesn't even trust S_IFMT to work: #if defined(PYCC_VACPP) /* VisualAge C/C++ Failed to Define MountType Field in sys/stat.h */ #define S_IFMT (S_IFDIR|S_IFCHR|S_IFREG) #endif #ifndef S_ISDIR #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) #endif Out-of-synch preprocessor-trick duplication like this is Major Evil, and I don't want to see some bastard child of those duplicated into bltinmodule.c too. Windows doesn't define S_ISDIR, so at least that macro is needed. The only fellow doing an OS/2 port I know of now is Andrew MacIntyre, and I happen to know that, as of Tuesday <wink>, he neither uses nor has access to a VisualAge C compiler -- so no telling whether the PYCC_VACPP silliness is still needed. I'd drop it! Who wants to move this crap into pyport.h? I would, but I don't want to break the Unix builds, or research 57 varieties of Unix spellings. pyport.h already #includes <sys/stat.h> on Windows, so for Windows it suffices to add just the macros there (assuming these macros are worth the trouble of defining at all -- S_ISDIR() is only used once in each of these files, and I don't happen to find S_ISDIR(x) any clearer than its expansion).
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4