mirror of
				https://github.com/python/cpython.git
				synced 2025-10-26 19:24:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
| ** Mac shared lib glue.
 | |
| */
 | |
| 
 | |
| #include <Quickdraw.h>
 | |
| #include <SegLoad.h>
 | |
| #include <FragLoad.h>
 | |
| #include <Files.h>
 | |
| #include <Resources.h>
 | |
| 
 | |
| #ifdef __MWERKS__
 | |
| #ifdef PRE_CW8
 | |
| /*
 | |
| ** This part is copied from MW Startup.c, which is
 | |
| **	Copyright © 1993 metrowerks inc. All Rights Reserved.
 | |
| */
 | |
| #include <setjmp.h>
 | |
| #include <stdio.h>
 | |
| 
 | |
| /* void	*__local_destructor_chain;	/*	chain of local objects that need destruction	*/
 | |
| 
 | |
| 	/*	public data		*/
 | |
| 
 | |
| QDGlobals qd;						/*	define the Quickdraw globals here!	*/
 | |
| jmp_buf __program_exit;				/*	exit() does a longjmp() to here		*/
 | |
| void (*__atexit_hook)(void);		/*	atexit()  sets this up if it is ever called	*/
 | |
| void (*___atexit_hook)(void);		/*	_atexit() sets this up if it is ever called	*/
 | |
| int __aborting;						/*	abort() sets this and longjmps to __program_exit	*/
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| /*
 | |
| ** 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
 | |
| PythonCore_init(InitBlockPtr data)
 | |
| {
 | |
| 	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);
 | |
| }
 | |
| 
 | 
