]> granicus.if.org Git - python/commitdiff
If the preference filename resource is empty don't try to open or
authorJack Jansen <jack.jansen@cwi.nl>
Mon, 13 Jul 1998 13:38:29 +0000 (13:38 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Mon, 13 Jul 1998 13:38:29 +0000 (13:38 +0000)
create the preferences file. This is so that frozen programs don't
interfere with an existing Python installation, or leave turds in the
Preferences folder.

Mac/Python/macgetpath.c

index 80918fd6db07d0bcdf40e587baeac83b083ea329..70a1b69665eb9b2904ec730dd4e2710c895d8467 100644 (file)
@@ -65,10 +65,11 @@ PERFORMANCE OF THIS SOFTWARE.
 :Lib:test\n\
 :Lib:mac"
 
-static void
+static int
 getpreffilefss(FSSpec *fssp)
 {
        static int diditbefore=0;
+       static int rv = 1;
        static FSSpec fss;
     short prefdirRefNum;
     long prefdirDirID;
@@ -88,12 +89,19 @@ getpreffilefss(FSSpec *fssp)
            }
            
            HLock(namehandle);
-               (void)FSMakeFSSpec(prefdirRefNum, prefdirDirID, (unsigned char *)*namehandle, &fss);
+           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);
+               }
                HUnlock(namehandle);
                ReleaseResource(namehandle);
                diditbefore = 1;
        }
        *fssp = fss;
+       return rv;
 }
 
 char *
@@ -162,7 +170,8 @@ PyMac_OpenPrefFile()
     short prefrh;
     OSErr err;
 
-       getpreffilefss(&dirspec);
+       if ( !getpreffilefss(&dirspec))
+               return -1;
        prefrh = FSpOpenResFile(&dirspec, fsRdWrShPerm);
        if ( prefrh < 0 ) {
 #if 0
@@ -225,7 +234,7 @@ PyMac_GetPythonDir()
            prefrh = PyMac_OpenPrefFile();
            handle = (AliasHandle)Get1Resource('alis', PYTHONHOME_ID);
            if ( handle == NULL ) {
-               (void)StopAlert(BADPREFFILE_ID, NULL);
+               /* (void)StopAlert(BADPREFFILE_ID, NULL); */
                diditbefore=1;
                return ":";
            }