Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 26a69db

Browse files
author
Just van Rossum
committed
put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
1 parent 9202755 commit 26a69db

2 files changed

Lines changed: 38 additions & 11 deletions

File tree

Mac/Lib/preferences.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def delete(self, deep=0):
205205
def preferencefile(filename, creator=None, type=None):
206206
create = creator != None and type != None
207207
vrefnum, dirid = macfs.FindFolder(MACFS.kOnSystemDisk, 'pref', create)
208-
fss = macfs.FSSpec((vrefnum, dirid, filename))
208+
fss = macfs.FSSpec((vrefnum, dirid, ":Python:" + filename))
209209
oldrf = Res.CurResFile()
210210
if create:
211211
try:

Mac/Python/macgetpath.c

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,30 +73,57 @@ getpreffilefss(FSSpec *fssp)
7373
static FSSpec fss;
7474
short prefdirRefNum;
7575
long prefdirDirID;
76+
long pyprefdirDirID;
7677
Handle namehandle;
78+
OSErr err;
7779

7880
if ( !diditbefore ) {
79-
if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum,
80-
&prefdirDirID) != noErr ) {
81-
/* Something wrong with preferences folder */
82-
(void)StopAlert(NOPREFDIR_ID, NULL);
83-
exit(1);
84-
}
85-
8681
if ( (namehandle=GetNamedResource('STR ', PREFFILENAME_NAME)) == NULL ) {
8782
(void)StopAlert(NOPREFNAME_ID, NULL);
8883
exit(1);
8984
}
9085

91-
HLock(namehandle);
9286
if ( **namehandle == '\0' ) {
9387
/* Empty string means don't use preferences file */
9488
rv = 0;
9589
} else {
9690
/* There is a filename, construct the fsspec */
97-
(void)FSMakeFSSpec(prefdirRefNum, prefdirDirID, (unsigned char *)*namehandle, &fss);
91+
if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum,
92+
&prefdirDirID) != noErr ) {
93+
/* Something wrong with preferences folder */
94+
(void)StopAlert(NOPREFDIR_ID, NULL);
95+
exit(1);
96+
}
97+
/* make fsspec for the "Python" folder inside the prefs folder */
98+
err = FSMakeFSSpec(prefdirRefNum, prefdirDirID, "\pPython", &fss);
99+
if (err == fnfErr) {
100+
/* it doesn't exist: create it */
101+
err = FSpDirCreate(&fss, smSystemScript, &pyprefdirDirID);
102+
} else {
103+
/* it does exist, now find out the dirID of the Python prefs folder, brrr. */
104+
CInfoPBRec info;
105+
info.dirInfo.ioVRefNum = fss.vRefNum;
106+
info.dirInfo.ioDrDirID = fss.parID;
107+
info.dirInfo.ioNamePtr = fss.name;
108+
info.dirInfo.ioFDirIndex = 0;
109+
info.dirInfo.ioACUser = 0;
110+
err = PBGetCatInfo(&info, 0);
111+
if (err == noErr) {
112+
pyprefdirDirID = info.dirInfo.ioDrDirID;
113+
}
114+
}
115+
if (err != noErr) {
116+
(void)StopAlert(NOPREFDIR_ID, NULL);
117+
exit(1);
118+
}
119+
HLock(namehandle);
120+
err = FSMakeFSSpec(fss.vRefNum, pyprefdirDirID, (unsigned char *)*namehandle, &fss);
121+
HUnlock(namehandle);
122+
if (err != noErr && err != fnfErr) {
123+
(void)StopAlert(NOPREFDIR_ID, NULL);
124+
exit(1);
125+
}
98126
}
99-
HUnlock(namehandle);
100127
ReleaseResource(namehandle);
101128
diditbefore = 1;
102129
}

0 commit comments

Comments
 (0)