summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mac/Python/macgetpath.c37
1 files changed, 21 insertions, 16 deletions
diff --git a/Mac/Python/macgetpath.c b/Mac/Python/macgetpath.c
index ed6c491..98abbd8 100644
--- a/Mac/Python/macgetpath.c
+++ b/Mac/Python/macgetpath.c
@@ -108,7 +108,6 @@ Py_GetPath()
char *p, *endp;
int newlen;
char *curwd;
- staticforward char *PyMac_GetPythonDir();
#ifndef USE_BUILTIN_PATH
staticforward char *PyMac_GetPythonPath();
#endif
@@ -200,7 +199,7 @@ PyMac_OpenPrefFile()
/*
** Return the name of the Python directory
*/
-static char *
+char *
PyMac_GetPythonDir()
{
static int diditbefore = 0;
@@ -257,7 +256,7 @@ PyMac_GetPythonDir()
}
#ifndef USE_BUILTIN_PATH
-static char *
+char *
PyMac_GetPythonPath()
{
short oldrh, prefrh = -1;
@@ -364,7 +363,8 @@ PyMac_PreferenceOptions(PyMac_PrefRecord *pr)
short oldrh, prefrh = -1;
Handle handle;
int size;
- char *p;
+ PyMac_PrefRecord *p;
+ int action;
oldrh = CurResFile();
@@ -384,18 +384,23 @@ PyMac_PreferenceOptions(PyMac_PrefRecord *pr)
}
HLock(handle);
size = GetHandleSize(handle);
- p = (char *)*handle;
-
- if ( size > POPT_INSPECT ) pr->inspect = p[POPT_INSPECT];
- if ( size > POPT_VERBOSE ) pr->verbose = p[POPT_VERBOSE];
- if ( size > POPT_SUPPRESS ) pr->suppress_print = p[POPT_SUPPRESS];
- if ( size > POPT_UNBUFFERED ) pr->unbuffered = p[POPT_UNBUFFERED];
- if ( size > POPT_DEBUGGING ) pr->debugging = p[POPT_DEBUGGING];
- if ( size > POPT_KEEPNORM ) pr->keep_normal = p[POPT_KEEPNORM];
- if ( size > POPT_KEEPERR ) pr->keep_error = p[POPT_KEEPERR];
- if ( size > POPT_NOINTOPT ) pr->nointopt = p[POPT_NOINTOPT];
- if ( size > POPT_NOARGS ) pr->noargs = p[POPT_NOARGS];
-
+ p = (PyMac_PrefRecord *)*handle;
+ if ( p->version == POPT_VERSION_CURRENT && size == sizeof(PyMac_PrefRecord) ) {
+ *pr = *p;
+ } else {
+ action = CautionAlert(BADPREFERENCES_ID, NULL);
+ if ( action == BADPREF_DELETE ) {
+ OSErr err;
+
+ RemoveResource(handle);
+ if ( (err=ResError()) ) printf("RemoveResource: %d\n", err);
+ if ( prefrh != -1 ) {
+ UpdateResFile(prefrh);
+ if ( (err=ResError()) ) printf("UpdateResFile: %d\n", err);
+ }
+ } else if ( action == BADPREF_QUIT )
+ exit(1);
+ }
HUnlock(handle);
if ( prefrh != -1) CloseResFile(prefrh);