annotate Mac/Python/macgetpath.c @ 19841:d8dd75e3b304 legacy-trunk

Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length' parameter for the return string (as unix pathnames are not limited by the 255 char pstring limit). Implemented the function for MachO-Python, where it returns unix pathnames.
author Jack Jansen <jack.jansen@cwi.nl>
date Mon, 10 Sep 2001 22:00:39 +0000
parents dc17ef1a7613
children 274aa91b417c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5079
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
1 /***********************************************************
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
2 Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
3 The Netherlands.
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
4
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
5 All Rights Reserved
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
6
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
7 Permission to use, copy, modify, and distribute this software and its
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
8 documentation for any purpose and without fee is hereby granted,
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
9 provided that the above copyright notice appear in all copies and that
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
10 both that copyright notice and this permission notice appear in
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
11 supporting documentation, and that the names of Stichting Mathematisch
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
12 Centrum or CWI or Corporation for National Research Initiatives or
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
13 CNRI not be used in advertising or publicity pertaining to
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
14 distribution of the software without specific, written prior
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
15 permission.
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
16
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
17 While CWI is the initial source for this software, a modified version
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
18 is made available by the Corporation for National Research Initiatives
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
19 (CNRI) at the Internet address ftp://ftp.python.org.
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
20
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
21 STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
22 REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
23 MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
24 CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
25 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
26 PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
27 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
28 PERFORMANCE OF THIS SOFTWARE.
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
29
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
30 ******************************************************************/
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
31
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
32 #include "Python.h"
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33 #include "osdefs.h"
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
34 #include "macglue.h"
13605
dc17ef1a7613 include macdefs.h for declaration of getwd, if non-gusi python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 13547
diff changeset
35 #include "macdefs.h"
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
36 #include "pythonresources.h"
13547
db963a615bc9 ANSIfication step 2: make sure all needed prototypes are available, and all needed
Jack Jansen <jack.jansen@cwi.nl>
parents: 12446
diff changeset
37 #ifdef HAVE_UNISTD_H
db963a615bc9 ANSIfication step 2: make sure all needed prototypes are available, and all needed
Jack Jansen <jack.jansen@cwi.nl>
parents: 12446
diff changeset
38 #include <unistd.h>
db963a615bc9 ANSIfication step 2: make sure all needed prototypes are available, and all needed
Jack Jansen <jack.jansen@cwi.nl>
parents: 12446
diff changeset
39 #endif
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40
19841
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 13605
diff changeset
41 #ifdef TARGET_API_MAC_OSX
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 13605
diff changeset
42 #define PATHNAMELEN 1024
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 13605
diff changeset
43 #else
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 13605
diff changeset
44 #define PATHNAMELEN 256
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 13605
diff changeset
45 #endif
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
46
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
47 /* Return the initial python search path. This is called once from
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
48 ** initsys() to initialize sys.path.
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
49 **
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
50 ** If USE_BUILTIN_PATH is defined the path defined here is used
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
51 ** (after prepending the python home dir to each item).
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
52 ** If it is not defined the path is gotten from a resource in the
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
53 ** Preferences file.
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
54 **
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
55 ** XXXX This code needs cleaning up. The routines here have moved
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
56 ** around quite a bit, and they're pretty messy for that reason.
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
57 */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
58
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
59 #include <Files.h>
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
60 #include <Aliases.h>
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
61 #include <Folders.h>
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
62 #include <Resources.h>
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
63 #include <TextUtils.h>
3057
24af8eab7b76 Fixed to work on 68K (could be yet another optimizer bug or something)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3054
diff changeset
64 #include <Dialogs.h>
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
65
12281
51c0c3b6d919 Started on GUSI2 and threading support.
Jack Jansen <jack.jansen@cwi.nl>
parents: 10072
diff changeset
66 #ifdef USE_GUSI1
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
67 #include <GUSI.h>
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
68 #endif
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
69
13547
db963a615bc9 ANSIfication step 2: make sure all needed prototypes are available, and all needed
Jack Jansen <jack.jansen@cwi.nl>
parents: 12446
diff changeset
70 #ifndef USE_BUILTIN_PATH
db963a615bc9 ANSIfication step 2: make sure all needed prototypes are available, and all needed
Jack Jansen <jack.jansen@cwi.nl>
parents: 12446
diff changeset
71 staticforward char *PyMac_GetPythonPath();
db963a615bc9 ANSIfication step 2: make sure all needed prototypes are available, and all needed
Jack Jansen <jack.jansen@cwi.nl>
parents: 12446
diff changeset
72 #endif
db963a615bc9 ANSIfication step 2: make sure all needed prototypes are available, and all needed
Jack Jansen <jack.jansen@cwi.nl>
parents: 12446
diff changeset
73
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
74 #define PYTHONPATH "\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
75 :\n\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
76 :Lib\n\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
77 :Lib:stdwin\n\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
78 :Lib:test\n\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
79 :Lib:mac"
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
80
8666
6245b819bdd8 If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents: 8247
diff changeset
81 static int
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
82 getpreffilefss(FSSpec *fssp)
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
83 {
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
84 static int diditbefore=0;
8666
6245b819bdd8 If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents: 8247
diff changeset
85 static int rv = 1;
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
86 static FSSpec fss;
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
87 short prefdirRefNum;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
88 long prefdirDirID;
10072
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
89 long pyprefdirDirID;
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
90 Handle namehandle;
10072
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
91 OSErr err;
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
92
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
93 if ( !diditbefore ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
94 if ( (namehandle=GetNamedResource('STR ', PREFFILENAME_NAME)) == NULL ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
95 (void)StopAlert(NOPREFNAME_ID, NULL);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
96 exit(1);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
97 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
98
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
99 if ( **namehandle == '\0' ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
100 /* Empty string means don't use preferences file */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
101 rv = 0;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
102 } else {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
103 /* There is a filename, construct the fsspec */
10072
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
104 if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum,
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
105 &prefdirDirID) != noErr ) {
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
106 /* Something wrong with preferences folder */
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
107 (void)StopAlert(NOPREFDIR_ID, NULL);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
108 exit(1);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
109 }
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
110 /* make fsspec for the "Python" folder inside the prefs folder */
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
111 err = FSMakeFSSpec(prefdirRefNum, prefdirDirID, "\pPython", &fss);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
112 if (err == fnfErr) {
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
113 /* it doesn't exist: create it */
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
114 err = FSpDirCreate(&fss, smSystemScript, &pyprefdirDirID);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
115 } else {
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
116 /* it does exist, now find out the dirID of the Python prefs folder, brrr. */
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
117 CInfoPBRec info;
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
118 info.dirInfo.ioVRefNum = fss.vRefNum;
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
119 info.dirInfo.ioDrDirID = fss.parID;
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
120 info.dirInfo.ioNamePtr = fss.name;
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
121 info.dirInfo.ioFDirIndex = 0;
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
122 info.dirInfo.ioACUser = 0;
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
123 err = PBGetCatInfo(&info, 0);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
124 if (err == noErr) {
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
125 pyprefdirDirID = info.dirInfo.ioDrDirID;
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
126 }
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
127 }
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
128 if (err != noErr) {
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
129 (void)StopAlert(NOPREFDIR_ID, NULL);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
130 exit(1);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
131 }
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
132 HLock(namehandle);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
133 err = FSMakeFSSpec(fss.vRefNum, pyprefdirDirID, (unsigned char *)*namehandle, &fss);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
134 HUnlock(namehandle);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
135 if (err != noErr && err != fnfErr) {
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
136 (void)StopAlert(NOPREFDIR_ID, NULL);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
137 exit(1);
ecebcd84df37 put the preferences file in a folder called "Python" inside the prefs folder, just like the IDE does -- jvr
Just van Rossum <just@lettererror.com>
parents: 8788
diff changeset
138 }
8666
6245b819bdd8 If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents: 8247
diff changeset
139 }
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
140 ReleaseResource(namehandle);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
141 diditbefore = 1;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
142 }
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
143 *fssp = fss;
8666
6245b819bdd8 If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents: 8247
diff changeset
144 return rv;
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
145 }
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
146
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
147 char *
3750
a22438e94fe9 Old names changed to Py_GetCopyright, etc.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3485
diff changeset
148 Py_GetPath()
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
149 {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
150 /* Modified by Jack to do something a bit more sensible:
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
151 ** - Prepend the python home-directory (which is obtained from a Preferences
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
152 ** resource)
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
153 ** - Add :
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
154 */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
155 static char *pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
156 char *p, *endp;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
157 int newlen;
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
158 char *curwd;
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
159
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
160 if ( pythonpath ) return pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
161 #ifndef USE_BUILTIN_PATH
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
162 if ( pythonpath = PyMac_GetPythonPath() )
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
163 return pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
164 printf("Warning: No pythonpath resource found, using builtin default\n");
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
165 #endif
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
166 curwd = PyMac_GetPythonDir();
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
167 p = PYTHONPATH;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
168 endp = p;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
169 pythonpath = malloc(2);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
170 if ( pythonpath == NULL ) return PYTHONPATH;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
171 strcpy(pythonpath, ":");
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
172 while (*endp) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
173 endp = strchr(p, '\n');
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
174 if ( endp == NULL )
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
175 endp = p + strlen(p);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
176 newlen = strlen(pythonpath) + 1 + strlen(curwd) + (endp-p);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
177 pythonpath = realloc(pythonpath, newlen+1);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
178 if ( pythonpath == NULL ) return PYTHONPATH;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
179 strcat(pythonpath, "\n");
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
180 if ( *p == ':' ) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
181 p++;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
182 strcat(pythonpath, curwd);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
183 strncat(pythonpath, p, (endp-p));
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
184 newlen--; /* Ok, ok, we've allocated one byte too much */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
185 } else {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
186 /* We've allocated too much in this case */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
187 newlen -= strlen(curwd);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
188 pythonpath = realloc(pythonpath, newlen+1);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
189 if ( pythonpath == NULL ) return PYTHONPATH;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
190 strncat(pythonpath, p, (endp-p));
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
191 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
192 pythonpath[newlen] = '\0';
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
193 p = endp + 1;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
194 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
195 return pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
196 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
197
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
198
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
199 /*
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
200 ** Open/create the Python Preferences file, return the handle
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
201 */
12446
e367ad3ea59a Made the GUSI options work again with GUSI 2.
Jack Jansen <jack.jansen@cwi.nl>
parents: 12281
diff changeset
202 short
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
203 PyMac_OpenPrefFile()
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
204 {
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
205 AliasHandle handle;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
206 FSSpec dirspec;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
207 short prefrh;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
208 OSErr err;
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
209
8666
6245b819bdd8 If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents: 8247
diff changeset
210 if ( !getpreffilefss(&dirspec))
6245b819bdd8 If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents: 8247
diff changeset
211 return -1;
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
212 prefrh = FSpOpenResFile(&dirspec, fsRdWrShPerm);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
213 if ( prefrh < 0 ) {
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
214 #if 0
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
215 action = CautionAlert(NOPREFFILE_ID, NULL);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
216 if ( action == NOPREFFILE_NO )
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
217 exit(1);
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
218 #endif
3410
022474ac2451 Changed MacOS creator code from PYTH to Pyth
Jack Jansen <jack.jansen@cwi.nl>
parents: 3057
diff changeset
219 FSpCreateResFile(&dirspec, 'Pyth', 'pref', 0);
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
220 prefrh = FSpOpenResFile(&dirspec, fsRdWrShPerm);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
221 if ( prefrh == -1 ) {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
222 /* This "cannot happen":-) */
3057
24af8eab7b76 Fixed to work on 68K (could be yet another optimizer bug or something)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3054
diff changeset
223 printf("Cannot create preferences file, error %d\n", ResError());
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
224 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
225 }
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
226 if ( (err=PyMac_init_process_location()) != 0 ) {
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
227 printf("Cannot get application location, error %d\n", err);
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
228 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
229 }
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
230 dirspec = PyMac_ApplicationFSSpec;
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
231 dirspec.name[0] = 0;
3057
24af8eab7b76 Fixed to work on 68K (could be yet another optimizer bug or something)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3054
diff changeset
232 if ((err=NewAlias(NULL, &dirspec, &handle)) != 0 ) {
24af8eab7b76 Fixed to work on 68K (could be yet another optimizer bug or something)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3054
diff changeset
233 printf("Cannot make alias to application directory, error %d\n", err);
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
234 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
235 }
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
236 AddResource((Handle)handle, 'alis', PYTHONHOME_ID, "\p");
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
237 UpdateResFile(prefrh);
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
238
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
239 } else {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
240 UseResFile(prefrh);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
241 }
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
242 return prefrh;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
243 }
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
244
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
245 /*
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
246 ** Return the name of the Python directory
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
247 */
6278
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
248 char *
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
249 PyMac_GetPythonDir()
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
250 {
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
251 static int diditbefore = 0;
19841
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 13605
diff changeset
252 static char name[PATHNAMELEN] = {':', '\0'};
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
253 AliasHandle handle;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
254 FSSpec dirspec;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
255 Boolean modified = 0;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
256 short oldrh, prefrh = -1, homerh;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
257
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
258 if ( diditbefore )
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
259 return name;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
260
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
261 oldrh = CurResFile();
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
262
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
263 /* First look for an override in the application file */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
264 UseResFile(PyMac_AppRefNum);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
265 handle = (AliasHandle)Get1Resource('alis', PYTHONHOMEOVERRIDE_ID);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
266 UseResFile(oldrh);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
267 if ( handle != NULL ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
268 homerh = PyMac_AppRefNum;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
269 } else {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
270 /* Try to open preferences file in the preferences folder. */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
271 prefrh = PyMac_OpenPrefFile();
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
272 handle = (AliasHandle)Get1Resource('alis', PYTHONHOME_ID);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
273 if ( handle == NULL ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
274 /* (void)StopAlert(BADPREFFILE_ID, NULL); */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
275 diditbefore=1;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
276 return ":";
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
277 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
278 homerh = prefrh;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
279 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
280 /* It exists. Resolve it (possibly updating it) */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
281 if ( ResolveAlias(NULL, handle, &dirspec, &modified) != noErr ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
282 (void)StopAlert(BADPREFFILE_ID, NULL);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
283 diditbefore=1;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
284 return ":";
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
285 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
286 if ( modified ) {
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
287 ChangedResource((Handle)handle);
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
288 UpdateResFile(homerh);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
289 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
290 if ( prefrh != -1 ) CloseResFile(prefrh);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
291 UseResFile(oldrh);
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
292
19841
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 13605
diff changeset
293 if ( PyMac_GetFullPathname(&dirspec, name, PATHNAMELEN) == 0 ) {
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
294 strcat(name, ":");
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
295 } else {
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
296 /* If all fails, we return the current directory */
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
297 printf("Python home dir exists but I cannot find the pathname!!\n");
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
298 name[0] = 0;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
299 (void)getwd(name);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
300 }
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
301 diditbefore = 1;
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
302 return name;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
303 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
304
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
305 #ifndef USE_BUILTIN_PATH
6278
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
306 char *
13547
db963a615bc9 ANSIfication step 2: make sure all needed prototypes are available, and all needed
Jack Jansen <jack.jansen@cwi.nl>
parents: 12446
diff changeset
307 PyMac_GetPythonPath(void)
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
308 {
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
309 short oldrh, prefrh = -1;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
310 char *rv;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
311 int i, newlen;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
312 Str255 pathitem;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
313 int resource_id;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
314 OSErr err;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
315 Handle h;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
316
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
317 oldrh = CurResFile();
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
318 /*
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
319 ** This is a bit tricky. We check here whether the application file
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
320 ** contains an override. This is to forestall us finding another STR# resource
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
321 ** with "our" id and using that for path initialization
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
322 */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
323 UseResFile(PyMac_AppRefNum);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
324 SetResLoad(0);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
325 if ( (h=Get1Resource('STR#', PYTHONPATHOVERRIDE_ID)) ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
326 ReleaseResource(h);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
327 resource_id = PYTHONPATHOVERRIDE_ID;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
328 } else {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
329 resource_id = PYTHONPATH_ID;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
330 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
331 SetResLoad(1);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
332 UseResFile(oldrh);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
333
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
334 /* Open the preferences file only if there is no override */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
335 if ( resource_id != PYTHONPATHOVERRIDE_ID )
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
336 prefrh = PyMac_OpenPrefFile();
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
337 /* At this point, we may or may not have the preferences file open, and it
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
338 ** may or may not contain a sys.path STR# resource. We don't care, if it doesn't
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
339 ** exist we use the one from the application (the default).
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
340 ** We put an initial '\n' in front of the path that we don't return to the caller
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
341 */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
342 if( (rv = malloc(2)) == NULL )
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
343 goto out;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
344 strcpy(rv, "\n");
4205
c7994008378d Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents: 3750
diff changeset
345
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
346 for(i=1; ; i++) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
347 GetIndString(pathitem, resource_id, i);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
348 if( pathitem[0] == 0 )
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
349 break;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
350 if ( pathitem[0] >= 9 && strncmp((char *)pathitem+1, "$(PYTHON)", 9) == 0 ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
351 /* We have to put the directory in place */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
352 char *dir = PyMac_GetPythonDir();
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
353
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
354 newlen = strlen(rv) + strlen(dir) + (pathitem[0]-9) + 2;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
355 if( (rv=realloc(rv, newlen)) == NULL)
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
356 goto out;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
357 strcat(rv, dir);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
358 /* Skip a colon at the beginning of the item */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
359 if ( pathitem[0] > 9 && pathitem[1+9] == ':' ) {
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
360 memcpy(rv+strlen(rv), pathitem+1+10, pathitem[0]-10);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
361 newlen--;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
362 } else {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
363 memcpy(rv+strlen(rv), pathitem+1+9, pathitem[0]-9);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
364 }
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
365 rv[newlen-2] = '\n';
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
366 rv[newlen-1] = 0;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
367 } else if ( pathitem[0] >= 14 && strncmp((char *)pathitem+1, "$(APPLICATION)", 14) == 0 ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
368 /* This is the application itself */
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
369
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
370 if ( (err=PyMac_init_process_location()) != 0 ) {
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
371 printf("Cannot get application location, error %d\n", err);
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
372 exit(1);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
373 }
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
374
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
375 newlen = strlen(rv) + strlen(PyMac_ApplicationPath) + 2;
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
376 if( (rv=realloc(rv, newlen)) == NULL)
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
377 goto out;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
378 strcpy(rv+strlen(rv), PyMac_ApplicationPath);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
379 rv[newlen-2] = '\n';
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
380 rv[newlen-1] = 0;
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
381
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
382 } else {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
383 /* Use as-is */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
384 newlen = strlen(rv) + (pathitem[0]) + 2;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
385 if( (rv=realloc(rv, newlen)) == NULL)
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
386 goto out;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
387 memcpy(rv+strlen(rv), pathitem+1, pathitem[0]);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
388 rv[newlen-2] = '\n';
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
389 rv[newlen-1] = 0;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
390 }
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
391 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
392 if( strlen(rv) == 1) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
393 free(rv);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
394 rv = NULL;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
395 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
396 if ( rv ) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
397 rv[strlen(rv)-1] = 0;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
398 rv++;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
399 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
400 out:
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
401 if ( prefrh != -1) CloseResFile(prefrh);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
402 UseResFile(oldrh);
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
403 return rv;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
404 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
405 #endif /* !USE_BUILTIN_PATH */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
406
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
407 void
4238
6c86d9136c09 - Put all options in a struct
Jack Jansen <jack.jansen@cwi.nl>
parents: 4228
diff changeset
408 PyMac_PreferenceOptions(PyMac_PrefRecord *pr)
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
409 {
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
410 short oldrh, prefrh = -1;
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
411 Handle handle;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
412 int size;
6278
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
413 PyMac_PrefRecord *p;
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
414 int action;
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
415
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
416
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
417 oldrh = CurResFile();
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
418
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
419 /* Attempt to load overrides from application */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
420 UseResFile(PyMac_AppRefNum);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
421 handle = Get1Resource('Popt', PYTHONOPTIONSOVERRIDE_ID);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
422 UseResFile(oldrh);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
423
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
424 /* Otherwise get options from prefs file or any other open resource file */
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
425 if ( handle == NULL ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
426 prefrh = PyMac_OpenPrefFile();
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
427 handle = GetResource('Popt', PYTHONOPTIONS_ID);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
428 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
429 if ( handle == NULL ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
430 return;
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
431 }
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
432 HLock(handle);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
433 size = GetHandleSize(handle);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
434 p = (PyMac_PrefRecord *)*handle;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
435 if ( p->version == POPT_VERSION_CURRENT && size == sizeof(PyMac_PrefRecord) ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
436 *pr = *p;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
437 } else {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
438 action = CautionAlert(BADPREFERENCES_ID, NULL);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
439 if ( action == BADPREF_DELETE ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
440 OSErr err;
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
441
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
442 RemoveResource(handle);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
443 if ( (err=ResError()) ) printf("RemoveResource: %d\n", err);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
444 if ( prefrh != -1 ) {
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
445 UpdateResFile(prefrh);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
446 if ( (err=ResError()) ) printf("UpdateResFile: %d\n", err);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
447 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
448 } else if ( action == BADPREF_QUIT )
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
449 exit(1);
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
450 }
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
451 HUnlock(handle);
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
452
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
453 if ( prefrh != -1) CloseResFile(prefrh);
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
454 UseResFile(oldrh);
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
455 }
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
456
12281
51c0c3b6d919 Started on GUSI2 and threading support.
Jack Jansen <jack.jansen@cwi.nl>
parents: 10072
diff changeset
457 #ifdef USE_GUSI1
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
458 void
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
459 PyMac_SetGUSIOptions()
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
460 {
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
461 Handle h;
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
462 short oldrh, prefrh = -1;
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
463
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
464 oldrh = CurResFile();
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
465
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
466 /* Try override from the application resource fork */
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
467 UseResFile(PyMac_AppRefNum);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
468 h = Get1Resource('GU\267I', GUSIOPTIONSOVERRIDE_ID);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
469 UseResFile(oldrh);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
470
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
471 /* If that didn't work try nonoverride from anywhere */
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
472 if ( h == NULL ) {
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
473 prefrh = PyMac_OpenPrefFile();
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
474 h = GetResource('GU\267I', GUSIOPTIONS_ID);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
475 }
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
476 if ( h ) GUSILoadConfiguration(h);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
477 if ( prefrh != -1) CloseResFile(prefrh);
8788
d642e6748d12 Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents: 8666
diff changeset
478 UseResFile(oldrh);
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
479 }
12446
e367ad3ea59a Made the GUSI options work again with GUSI 2.
Jack Jansen <jack.jansen@cwi.nl>
parents: 12281
diff changeset
480 #endif /* USE_GUSI1 */