]> granicus.if.org Git - python/commitdiff
put the preferences file in a folder called "Python" inside the prefs folder, just...
authorJust van Rossum <just@lettererror.com>
Tue, 2 Feb 1999 15:49:03 +0000 (15:49 +0000)
committerJust van Rossum <just@lettererror.com>
Tue, 2 Feb 1999 15:49:03 +0000 (15:49 +0000)
Mac/Lib/preferences.py
Mac/Python/macgetpath.c

index 810d9ccf736a712b668426e415c514deb2e14a21..b1e094818e1e738dbbe9a947618123aaeba009c1 100644 (file)
@@ -205,7 +205,7 @@ class StrListLoader:
 def preferencefile(filename, creator=None, type=None):
        create = creator != None and type != None
        vrefnum, dirid = macfs.FindFolder(MACFS.kOnSystemDisk, 'pref', create)
-       fss = macfs.FSSpec((vrefnum, dirid, filename))
+       fss = macfs.FSSpec((vrefnum, dirid, ":Python:" + filename))
        oldrf = Res.CurResFile()
        if create:
                try:
index e84766fed20c3ec0dba5d9ae41b5bba396363805..02f9b485e62228756b310e29b39211ba74776053 100644 (file)
@@ -73,30 +73,57 @@ getpreffilefss(FSSpec *fssp)
        static FSSpec fss;
        short prefdirRefNum;
        long prefdirDirID;
+       long pyprefdirDirID;
        Handle namehandle;
+       OSErr err;
        
        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 ) {
                        (void)StopAlert(NOPREFNAME_ID, NULL);
                        exit(1);
                }
                
-               HLock(namehandle);
                if ( **namehandle == '\0' ) {
                        /* Empty string means don't use preferences file */
                        rv = 0;
                } else {
                        /* 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);
                diditbefore = 1;
        }