mirror of
https://github.com/python/cpython.git
synced 2025-09-12 03:37:09 +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
|
#pragma lib_export on
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_GUSI
|
||||||
|
void PyMac_FixGUSIcd Py_PROTO((void)); /* Workaround for GUSI chdir() call */
|
||||||
|
#endif
|
||||||
|
|
||||||
char *PyMac_StrError(int); /* strerror with mac errors */
|
char *PyMac_StrError(int); /* strerror with mac errors */
|
||||||
|
|
||||||
extern int PyMac_DoYieldEnabled; /* Don't do eventloop when false */
|
extern int PyMac_DoYieldEnabled; /* Don't do eventloop when false */
|
||||||
|
|
|
@ -176,7 +176,17 @@ mac_chdir(self, args)
|
||||||
object *self;
|
object *self;
|
||||||
object *args;
|
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);
|
return mac_1str(args, chdir);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static object *
|
static object *
|
||||||
|
|
|
@ -51,6 +51,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_GUSI
|
#ifdef USE_GUSI
|
||||||
#include <TFileSpec.h> /* For Path2FSSpec */
|
#include <TFileSpec.h> /* For Path2FSSpec */
|
||||||
|
#include <LowMem.h> /* For SetSFCurDir, etc */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_UNIVERSAL_HEADERS
|
#ifndef HAVE_UNIVERSAL_HEADERS
|
||||||
|
@ -118,6 +119,34 @@ struct hook_args {
|
||||||
static DlgHookYDUPP myhook_upp;
|
static DlgHookYDUPP myhook_upp;
|
||||||
static int upp_inited = 0;
|
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. */
|
/* Convert C to Pascal string. Returns pointer to static buffer. */
|
||||||
unsigned char *
|
unsigned char *
|
||||||
|
@ -657,21 +686,8 @@ PyMac_GetFSSpec(PyObject *v, FSSpec *fs)
|
||||||
/* It's a pathname */
|
/* It's a pathname */
|
||||||
if( !PyArg_Parse(v, "O&", PyMac_GetStr255, &path) )
|
if( !PyArg_Parse(v, "O&", PyMac_GetStr255, &path) )
|
||||||
return 0;
|
return 0;
|
||||||
#ifdef USE_GUSI
|
refnum = 0; /* XXXX Should get CurWD here?? */
|
||||||
{
|
|
||||||
FSSpec curdirfss;
|
|
||||||
|
|
||||||
if ( Path2FSSpec(":x", &curdirfss) == 0 ) {
|
|
||||||
refnum = curdirfss.vRefNum;
|
|
||||||
parid = curdirfss.parID;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
refnum = 0; /* XXXX Should get CurWD here... */
|
|
||||||
parid = 0;
|
parid = 0;
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
if( !PyArg_Parse(v, "(hlO&); FSSpec should be fullpath or (vrefnum,dirid,path)",
|
if( !PyArg_Parse(v, "(hlO&); FSSpec should be fullpath or (vrefnum,dirid,path)",
|
||||||
&refnum, &parid, PyMac_GetStr255, &path)) {
|
&refnum, &parid, PyMac_GetStr255, &path)) {
|
||||||
|
@ -687,7 +703,6 @@ PyMac_GetFSSpec(PyObject *v, FSSpec *fs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Convert a Python object to a Rect.
|
/* Convert a Python object to a Rect.
|
||||||
The object must be a (left, top, right, bottom) tuple.
|
The object must be a (left, top, right, bottom) tuple.
|
||||||
(This differs from the order in the struct but is consistent with
|
(This differs from the order in the struct but is consistent with
|
||||||
|
|
|
@ -192,6 +192,10 @@ PyMac_InitApplication()
|
||||||
*endp = '\0';
|
*endp = '\0';
|
||||||
|
|
||||||
chdir(curwd);
|
chdir(curwd);
|
||||||
|
#ifdef USE_GUSI
|
||||||
|
/* Change MacOS's idea of wd too */
|
||||||
|
PyMac_FixGUSIcd();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Py_Main(argc, argv);
|
Py_Main(argc, argv);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue