]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix to load needed resources on a mac
authorJack Jansen <jack.jansen@cwi.nl>
Tue, 31 Oct 1995 16:15:12 +0000 (16:15 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Tue, 31 Oct 1995 16:15:12 +0000 (16:15 +0000)
Modules/_tkinter.c

index 2e0a0630dcdb869471d94035629ed6b83238c674..94bd7295440e870c354f4516244dac3c54e01989 100644 (file)
@@ -5,6 +5,10 @@
 
 #ifdef macintosh
 #define MAC_TCL
+
+#include <CodeFragments.h>
+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