From 34cc5c31e8b9b1af15dd0c9b593806ef79299dfe Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Tue, 31 Oct 1995 16:15:12 +0000 Subject: [PATCH] Fix to load needed resources on a mac --- Modules/_tkinter.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 2e0a0630dcd..94bd7295440 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