mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Glue for the python shared library: an init routine that remembers
where we're loaded from and PyMac_AddLibResources() which adds that file to the resource file list.
This commit is contained in:
		
							parent
							
								
									c6647c6079
								
							
						
					
					
						commit
						2e4679db8e
					
				
					 1 changed files with 65 additions and 0 deletions
				
			
		
							
								
								
									
										65
									
								
								Mac/Python/macshlglue.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								Mac/Python/macshlglue.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,65 @@ | |||
| /*
 | ||||
| ** mac shared lib glue. | ||||
| ** | ||||
| ** Partially stolen from MW Startup.c, which is | ||||
| **	Copyright © 1993 metrowerks inc. All Rights Reserved. | ||||
| */ | ||||
| 
 | ||||
| #include <CPlusLibPPC.h> | ||||
| #include <Quickdraw.h> | ||||
| #include <SegLoad.h> | ||||
| #include <setjmp.h> | ||||
| #include <FragLoad.h> | ||||
| #include <Files.h> | ||||
| #include <Resources.h> | ||||
| 
 | ||||
| #include <stdio.h> | ||||
| 
 | ||||
| char *macstrerror(); | ||||
| 
 | ||||
| DestructorChain	*__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	*/ | ||||
| 
 | ||||
| int library_fss_valid; | ||||
| 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 | ||||
| __sinit(InitBlockPtr data) | ||||
| { | ||||
| 	if ( data == NULL ) 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() | ||||
| { | ||||
| 	OSErr err; | ||||
| 	short fd, curfd; | ||||
| 	 | ||||
| 	if ( !library_fss_valid )  | ||||
| 		return; | ||||
| 	fd = FSpOpenResFile(&library_fss, fsRdWrShPerm); | ||||
| } | ||||
|    	 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jack Jansen
						Jack Jansen