Why don't we handle this the same way as, say, PyOS_CheckStack()?
I.e. if USE_CHECK_IMPORT_CASE is defined it is necessary to check the case of the imported file (i.e. it's not defined on vanilla unix, defined on most other platforms) and if it is defined we call PyOS_CheckCase(filename, modulename). All these routines can be in different files, for all I care, similar to the dynload_*.c files.
A. I want the code in the CVS tree. That some of your Mac code is not in the CVS tree creates problems for everyone (we can never guess whether we're breaking your code because we have no idea what your code is).
B. PyOS_CheckCase() is not of general use. It's only of interest inside import.c, so it's better to live there as a static function.
C. I very much enjoyed getting rid of the obfuscating #ifdef CHECK_IMPORT_CASE blocks in import.c! This code is hard enough to follow without distributing preprocessor tricks all over the place. Now they live only inside the body of case_ok(), where they're truly needed. That is, case_ok() is a perfectly sensible cross-platfrom abstraction, and *calling* code doesn't need to be bothered with how it's implemented-- or even whether it's needed --on various platfroms. On Linux, case_ok() reduces to the one-liner "return 1;", and I don't mind paying a function call in return for the increase in clarity inside find_module().
D. The schedule says we release the beta tomorrow <0.6 wink>.