Commit 26a69db4 authored by Just van Rossum's avatar Just van Rossum

put the preferences file in a folder called "Python" inside the prefs folder,...

put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
parent 9202755f
...@@ -205,7 +205,7 @@ class StrListLoader: ...@@ -205,7 +205,7 @@ class StrListLoader:
def preferencefile(filename, creator=None, type=None): def preferencefile(filename, creator=None, type=None):
create = creator != None and type != None create = creator != None and type != None
vrefnum, dirid = macfs.FindFolder(MACFS.kOnSystemDisk, 'pref', create) vrefnum, dirid = macfs.FindFolder(MACFS.kOnSystemDisk, 'pref', create)
fss = macfs.FSSpec((vrefnum, dirid, filename)) fss = macfs.FSSpec((vrefnum, dirid, ":Python:" + filename))
oldrf = Res.CurResFile() oldrf = Res.CurResFile()
if create: if create:
try: try:
......
...@@ -73,30 +73,57 @@ getpreffilefss(FSSpec *fssp) ...@@ -73,30 +73,57 @@ getpreffilefss(FSSpec *fssp)
static FSSpec fss; static FSSpec fss;
short prefdirRefNum; short prefdirRefNum;
long prefdirDirID; long prefdirDirID;
long pyprefdirDirID;
Handle namehandle; Handle namehandle;
OSErr err;
if ( !diditbefore ) { if ( !diditbefore ) {
if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum,
&prefdirDirID) != noErr ) {
/* Something wrong with preferences folder */
(void)StopAlert(NOPREFDIR_ID, NULL);
exit(1);
}
if ( (namehandle=GetNamedResource('STR ', PREFFILENAME_NAME)) == NULL ) { if ( (namehandle=GetNamedResource('STR ', PREFFILENAME_NAME)) == NULL ) {
(void)StopAlert(NOPREFNAME_ID, NULL); (void)StopAlert(NOPREFNAME_ID, NULL);
exit(1); exit(1);
} }
HLock(namehandle);
if ( **namehandle == '\0' ) { if ( **namehandle == '\0' ) {
/* Empty string means don't use preferences file */ /* Empty string means don't use preferences file */
rv = 0; rv = 0;
} else { } else {
/* There is a filename, construct the fsspec */ /* There is a filename, construct the fsspec */
(void)FSMakeFSSpec(prefdirRefNum, prefdirDirID, (unsigned char *)*namehandle, &fss); if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum,
&prefdirDirID) != noErr ) {
/* Something wrong with preferences folder */
(void)StopAlert(NOPREFDIR_ID, NULL);
exit(1);
}
/* make fsspec for the "Python" folder inside the prefs folder */
err = FSMakeFSSpec(prefdirRefNum, prefdirDirID, "\pPython", &fss);
if (err == fnfErr) {
/* it doesn't exist: create it */
err = FSpDirCreate(&fss, smSystemScript, &pyprefdirDirID);
} else {
/* it does exist, now find out the dirID of the Python prefs folder, brrr. */
CInfoPBRec info;
info.dirInfo.ioVRefNum = fss.vRefNum;
info.dirInfo.ioDrDirID = fss.parID;
info.dirInfo.ioNamePtr = fss.name;
info.dirInfo.ioFDirIndex = 0;
info.dirInfo.ioACUser = 0;
err = PBGetCatInfo(&info, 0);
if (err == noErr) {
pyprefdirDirID = info.dirInfo.ioDrDirID;
}
}
if (err != noErr) {
(void)StopAlert(NOPREFDIR_ID, NULL);
exit(1);
}
HLock(namehandle);
err = FSMakeFSSpec(fss.vRefNum, pyprefdirDirID, (unsigned char *)*namehandle, &fss);
HUnlock(namehandle);
if (err != noErr && err != fnfErr) {
(void)StopAlert(NOPREFDIR_ID, NULL);
exit(1);
}
} }
HUnlock(namehandle);
ReleaseResource(namehandle); ReleaseResource(namehandle);
diditbefore = 1; diditbefore = 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment