From: Jack Jansen Date: Tue, 31 Oct 1995 16:15:12 +0000 (+0000) Subject: Fix to load needed resources on a mac X-Git-Tag: v1.4b1~502 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=34cc5c31e8b9b1af15dd0c9b593806ef79299dfe;p=thirdparty%2FPython%2Fcpython.git Fix to load needed resources on a mac --- diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 2e0a0630dcdb..94bd7295440e 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -5,6 +5,10 @@ #ifdef macintosh #define MAC_TCL + +#include +static int loaded_from_shlib = 0; +static FSSpec library_fss; #endif #ifdef MAC_TCL @@ -1271,6 +1275,9 @@ PyInit__tkinter () if (PyErr_Occurred ()) Py_FatalError ("can't initialize module _tkinter"); +#ifdef macintosh + mac_addlibresources(); +#endif } #ifdef macintosh @@ -1289,4 +1296,37 @@ panic(char * format, ...) Py_FatalError("Tcl/Tk panic"); } +/* +** If this module is dynamically loaded the following routine should +** be the init routine. It takes care of adding the shared library to +** the resource-file chain, so that the tk routines can find their +** resources. +*/ +OSErr pascal +init_tkinter_shlib(InitBlockPtr data) +{ + if ( data == nil ) return noErr; + if ( data->fragLocator.where == kOnDiskFlat ) { + library_fss = *data->fragLocator.u.onDisk.fileSpec; + loaded_from_shlib = 1; + } else if ( data->fragLocator.where == kOnDiskSegmented ) { + library_fss = *data->fragLocator.u.inSegs.fileSpec; + loaded_from_shlib = 1; + } + return noErr; +} + +/* +** Insert the library resources into the search path. Put them after +** the resources from the application. Again, we ignore errors. +*/ +void +mac_addlibresources() +{ + if ( !loaded_from_shlib ) + return; + (void)FSpOpenResFile(&library_fss, fsRdPerm); +} + + #endif