Mercurial > cpython-lru_cache-weakref
diff Mac/Python/macglue.c @ 3433:578ca302a598 legacy-trunk
Replaced previous gusi-chdir() fix by a call to PyMac_FixGUSIcd()
after each chdir call.
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Wed, 06 Mar 1996 16:21:34 +0000 |
| parents | 26bec9e22e5d |
| children | 89caffd2c061 |
line wrap: on
line diff
--- a/Mac/Python/macglue.c Wed Mar 06 07:20:06 1996 +0000 +++ b/Mac/Python/macglue.c Wed Mar 06 16:21:34 1996 +0000 @@ -51,6 +51,7 @@ #endif #ifdef USE_GUSI #include <TFileSpec.h> /* For Path2FSSpec */ +#include <LowMem.h> /* For SetSFCurDir, etc */ #endif #ifndef HAVE_UNIVERSAL_HEADERS @@ -118,6 +119,34 @@ 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 @@ /* 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 @@ } - /* 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
