mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
after each chdir call.
This commit is contained in:
		
							parent
							
								
									7275561d34
								
							
						
					
					
						commit
						378815ca86
					
				
					 4 changed files with 48 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -39,6 +39,10 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		|||
#pragma lib_export on
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef USE_GUSI
 | 
			
		||||
void PyMac_FixGUSIcd Py_PROTO((void));	/* Workaround for GUSI chdir() call */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
char *PyMac_StrError(int);			/* strerror with mac errors */
 | 
			
		||||
 | 
			
		||||
extern int PyMac_DoYieldEnabled;		/* Don't do eventloop when false */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -176,7 +176,17 @@ mac_chdir(self, args)
 | 
			
		|||
	object *self;
 | 
			
		||||
	object *args;
 | 
			
		||||
{
 | 
			
		||||
#ifdef USE_GUSI
 | 
			
		||||
	object *rv;
 | 
			
		||||
	
 | 
			
		||||
	/* Change MacOS's idea of wd too */
 | 
			
		||||
	rv = mac_1str(args, chdir);
 | 
			
		||||
	PyMac_FixGUSIcd();
 | 
			
		||||
	return rv;
 | 
			
		||||
#else
 | 
			
		||||
	return mac_1str(args, chdir);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static object *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,6 +51,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		|||
#endif
 | 
			
		||||
#ifdef USE_GUSI
 | 
			
		||||
#include <TFileSpec.h> /* For Path2FSSpec */
 | 
			
		||||
#include <LowMem.h> /* For SetSFCurDir, etc */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef HAVE_UNIVERSAL_HEADERS
 | 
			
		||||
| 
						 | 
				
			
			@ -118,6 +119,34 @@ struct hook_args {
 | 
			
		|||
static DlgHookYDUPP myhook_upp;
 | 
			
		||||
static int upp_inited = 0;
 | 
			
		||||
 | 
			
		||||
#ifdef USE_GUSI
 | 
			
		||||
/*
 | 
			
		||||
** GUSI (1.6.0 and earlier, at the least) do not set the MacOS idea of
 | 
			
		||||
** the working directory. Hence, we call this routine after each call
 | 
			
		||||
** to chdir() to rectify things.
 | 
			
		||||
*/
 | 
			
		||||
void
 | 
			
		||||
PyMac_FixGUSIcd()
 | 
			
		||||
{
 | 
			
		||||
	WDPBRec pb;
 | 
			
		||||
	FSSpec curdirfss;
 | 
			
		||||
	
 | 
			
		||||
	if ( Path2FSSpec(":x", &curdirfss) != noErr ) 
 | 
			
		||||
		return;
 | 
			
		||||
	
 | 
			
		||||
	/* Set MacOS "working directory" */
 | 
			
		||||
	pb.ioNamePtr= "\p";
 | 
			
		||||
	pb.ioVRefNum= curdirfss.vRefNum;
 | 
			
		||||
	pb.ioWDDirID= curdirfss.parID;
 | 
			
		||||
	if (PBHSetVol(&pb, 0) != noErr)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	/* Set standard-file working directory */
 | 
			
		||||
	LMSetSFSaveDisk(-curdirfss.vRefNum);
 | 
			
		||||
	LMSetCurDirStore(curdirfss.parID);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Convert C to Pascal string. Returns pointer to static buffer. */
 | 
			
		||||
unsigned char *
 | 
			
		||||
| 
						 | 
				
			
			@ -657,21 +686,8 @@ PyMac_GetFSSpec(PyObject *v, FSSpec *fs)
 | 
			
		|||
		/* It's a pathname */
 | 
			
		||||
		if( !PyArg_Parse(v, "O&", PyMac_GetStr255, &path) )
 | 
			
		||||
			return 0;
 | 
			
		||||
#ifdef USE_GUSI
 | 
			
		||||
		{
 | 
			
		||||
			FSSpec curdirfss;
 | 
			
		||||
			
 | 
			
		||||
			if ( Path2FSSpec(":x", &curdirfss) == 0 ) {
 | 
			
		||||
				refnum = curdirfss.vRefNum;
 | 
			
		||||
				parid = curdirfss.parID;
 | 
			
		||||
			} else {
 | 
			
		||||
				return 0;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
#else
 | 
			
		||||
		refnum = 0; /* XXXX Should get CurWD here... */
 | 
			
		||||
		refnum = 0; /* XXXX Should get CurWD here?? */
 | 
			
		||||
		parid = 0;
 | 
			
		||||
#endif
 | 
			
		||||
	} else {
 | 
			
		||||
		if( !PyArg_Parse(v, "(hlO&); FSSpec should be fullpath or (vrefnum,dirid,path)",
 | 
			
		||||
							&refnum, &parid, PyMac_GetStr255, &path)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -687,7 +703,6 @@ PyMac_GetFSSpec(PyObject *v, FSSpec *fs)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Convert a Python object to a Rect.
 | 
			
		||||
   The object must be a (left, top, right, bottom) tuple.
 | 
			
		||||
   (This differs from the order in the struct but is consistent with
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -192,6 +192,10 @@ PyMac_InitApplication()
 | 
			
		|||
			*endp = '\0';
 | 
			
		||||
 | 
			
		||||
			chdir(curwd);
 | 
			
		||||
#ifdef USE_GUSI
 | 
			
		||||
			/* Change MacOS's idea of wd too */
 | 
			
		||||
			PyMac_FixGUSIcd();
 | 
			
		||||
#endif
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	Py_Main(argc, argv);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue