mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
| ** Shared library initialization code.
 | |
| **
 | |
| ** This code calls the MetroWerks shared-library initialization code
 | |
| ** and performs one extra step: it remembers the FSSpec of the file
 | |
| ** we are loaded from, so we can later call PyMac_AddLibResources to
 | |
| ** add the file to our resource file chain.
 | |
| **
 | |
| ** This file is needed for PythonCore and for any dynamically loaded
 | |
| ** module that has interesting resources in its .slb file.
 | |
| ** Use by replacing __initialize in the "CFM preferences" init field
 | |
| ** by __initialize_with_resources.
 | |
| */
 | |
| 
 | |
| #include <Quickdraw.h>
 | |
| #include <SegLoad.h>
 | |
| #include <FragLoad.h>
 | |
| #include <Files.h>
 | |
| #include <Resources.h>
 | |
| 
 | |
| 
 | |
| /*
 | |
| ** Variables passed from shared lib initialization to PyMac_AddLibResources.
 | |
| */
 | |
| static int library_fss_valid;
 | |
| static FSSpec library_fss;
 | |
| 
 | |
| /*
 | |
| ** Routine called upon fragment load. We attempt to save the FSSpec from which we're
 | |
| ** loaded. We always return noErr (we just continue without the resources).
 | |
| */
 | |
| OSErr pascal
 | |
| __initialize_with_resources(InitBlockPtr data)
 | |
| {
 | |
| 	/* Call the MW runtime's initialization routine */
 | |
| /* #ifdef __CFM68K__ */
 | |
| #if 1
 | |
| 	__initialize();
 | |
| #else
 | |
| 	__sinit();
 | |
| #endif
 | |
| 	
 | |
| 	if ( data == nil ) return noErr;
 | |
| 	if ( data->fragLocator.where == kOnDiskFlat ) {
 | |
| 		library_fss = *data->fragLocator.u.onDisk.fileSpec;
 | |
| 		library_fss_valid = 1;
 | |
| 	} else if ( data->fragLocator.where == kOnDiskSegmented ) {
 | |
| 		library_fss = *data->fragLocator.u.inSegs.fileSpec;
 | |
| 		library_fss_valid = 1;
 | |
| 	}
 | |
| 	return noErr;
 | |
| }
 | |
| 
 | |
| /*
 | |
| ** Insert the library resources into the search path. Put them after
 | |
| ** the resources from the application (which we assume is the current
 | |
| ** resource file). Again, we ignore errors.
 | |
| */
 | |
| void
 | |
| PyMac_AddLibResources()
 | |
| {
 | |
| 	if ( !library_fss_valid ) 
 | |
| 		return;
 | |
| 	(void)FSpOpenResFile(&library_fss, fsRdPerm);
 | |
| }
 | |
| 
 | 
