Mercurial > cpython-lru_cache-weakref
annotate Mac/Python/macgetpath.c @ 11549:73ec66add947 legacy-trunk
Dummy functions which return unimpErr for lots of toolbox calls that are unavailable for 68K. This way we don't have to disable thm in bgen, so we
can still use them on PPC.
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Sun, 12 Dec 1999 21:38:29 +0000 |
| parents | ecebcd84df37 |
| children | 51c0c3b6d919 |
| 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" |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
35 #include "pythonresources.h" |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
36 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
37 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
38 /* 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
|
39 ** 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
|
40 ** |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
41 ** 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
|
42 ** (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
|
43 ** 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
|
44 ** Preferences file. |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
45 ** |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
46 ** 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
|
47 ** 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
|
48 */ |
|
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 #include <Files.h> |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
51 #include <Aliases.h> |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
52 #include <Folders.h> |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
53 #include <Resources.h> |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
54 #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
|
55 #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
|
56 |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
57 #ifdef USE_GUSI |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
58 #include <GUSI.h> |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
59 #endif |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
60 |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
61 #define PYTHONPATH "\ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
62 :\n\ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
63 :Lib\n\ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
64 :Lib:stdwin\n\ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
65 :Lib:test\n\ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
66 :Lib:mac" |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
67 |
|
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
|
68 static int |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
69 getpreffilefss(FSSpec *fssp) |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
70 { |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
71 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
|
72 static int rv = 1; |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
73 static FSSpec fss; |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
74 short prefdirRefNum; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
75 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
|
76 long pyprefdirDirID; |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
77 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
|
78 OSErr err; |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
79 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
80 if ( !diditbefore ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
81 if ( (namehandle=GetNamedResource('STR ', PREFFILENAME_NAME)) == NULL ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
82 (void)StopAlert(NOPREFNAME_ID, NULL); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
83 exit(1); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
84 } |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
85 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
86 if ( **namehandle == '\0' ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
87 /* Empty string means don't use preferences file */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
88 rv = 0; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
89 } else { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
90 /* 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
|
91 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
|
92 &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
|
93 /* 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
|
94 (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
|
95 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
|
96 } |
|
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
|
97 /* 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
|
98 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
|
99 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
|
100 /* 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
|
101 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
|
102 } 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
|
103 /* 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
|
104 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
|
105 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
|
106 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
|
107 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
|
108 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
|
109 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
|
110 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
|
111 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
|
112 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
|
113 } |
|
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 } |
|
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 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
|
116 (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
|
117 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
|
118 } |
|
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 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
|
120 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
|
121 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
|
122 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
|
123 (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
|
124 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
|
125 } |
|
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
|
126 } |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
127 ReleaseResource(namehandle); |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
128 diditbefore = 1; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
129 } |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
130 *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
|
131 return rv; |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
132 } |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
133 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
134 char * |
|
3750
a22438e94fe9
Old names changed to Py_GetCopyright, etc.
Jack Jansen <jack.jansen@cwi.nl>
parents:
3485
diff
changeset
|
135 Py_GetPath() |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
136 { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
137 /* 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
|
138 ** - 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
|
139 ** resource) |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
140 ** - Add : |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
141 */ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
142 static char *pythonpath; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
143 char *p, *endp; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
144 int newlen; |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
145 char *curwd; |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
146 #ifndef USE_BUILTIN_PATH |
| 3422 | 147 staticforward char *PyMac_GetPythonPath(); |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
148 #endif |
|
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 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
|
151 #ifndef USE_BUILTIN_PATH |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
152 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
|
153 return pythonpath; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
154 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
|
155 #endif |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
156 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
|
157 p = PYTHONPATH; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
158 endp = p; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
159 pythonpath = malloc(2); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
160 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
|
161 strcpy(pythonpath, ":"); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
162 while (*endp) { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
163 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
|
164 if ( endp == NULL ) |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
165 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
|
166 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
|
167 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
|
168 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
|
169 strcat(pythonpath, "\n"); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
170 if ( *p == ':' ) { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
171 p++; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
172 strcat(pythonpath, curwd); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
173 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
|
174 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
|
175 } else { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
176 /* 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
|
177 newlen -= strlen(curwd); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
178 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
|
179 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
|
180 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
|
181 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
182 pythonpath[newlen] = '\0'; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
183 p = endp + 1; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
184 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
185 return pythonpath; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
186 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
187 |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
188 |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
189 /* |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
190 ** 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
|
191 */ |
| 3422 | 192 static short |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
193 PyMac_OpenPrefFile() |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
194 { |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
195 AliasHandle handle; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
196 FSSpec dirspec; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
197 short prefrh; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
198 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
|
199 |
|
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
|
200 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
|
201 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
|
202 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
|
203 if ( prefrh < 0 ) { |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
204 #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
|
205 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
|
206 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
|
207 exit(1); |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
208 #endif |
|
3410
022474ac2451
Changed MacOS creator code from PYTH to Pyth
Jack Jansen <jack.jansen@cwi.nl>
parents:
3057
diff
changeset
|
209 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
|
210 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
|
211 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
|
212 /* 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
|
213 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
|
214 exit(1); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
215 } |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
216 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
|
217 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
|
218 exit(1); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
219 } |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
220 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
|
221 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
|
222 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
|
223 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
|
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 } |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
226 AddResource((Handle)handle, 'alis', PYTHONHOME_ID, "\p"); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
227 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
|
228 |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
229 } else { |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
230 UseResFile(prefrh); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
231 } |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
232 return prefrh; |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
233 } |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
234 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
235 /* |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
236 ** 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
|
237 */ |
|
6278
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
238 char * |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
239 PyMac_GetPythonDir() |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
240 { |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
241 static int diditbefore = 0; |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
242 static char name[256] = {':', '\0'}; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
243 AliasHandle handle; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
244 FSSpec dirspec; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
245 Boolean modified = 0; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
246 short oldrh, prefrh = -1, homerh; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
247 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
248 if ( diditbefore ) |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
249 return name; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
250 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
251 oldrh = CurResFile(); |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
252 |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
253 /* First look for an override in the application file */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
254 UseResFile(PyMac_AppRefNum); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
255 handle = (AliasHandle)Get1Resource('alis', PYTHONHOMEOVERRIDE_ID); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
256 UseResFile(oldrh); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
257 if ( handle != NULL ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
258 homerh = PyMac_AppRefNum; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
259 } else { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
260 /* Try to open preferences file in the preferences folder. */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
261 prefrh = PyMac_OpenPrefFile(); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
262 handle = (AliasHandle)Get1Resource('alis', PYTHONHOME_ID); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
263 if ( handle == NULL ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
264 /* (void)StopAlert(BADPREFFILE_ID, NULL); */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
265 diditbefore=1; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
266 return ":"; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
267 } |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
268 homerh = prefrh; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
269 } |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
270 /* It exists. Resolve it (possibly updating it) */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
271 if ( ResolveAlias(NULL, handle, &dirspec, &modified) != noErr ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
272 (void)StopAlert(BADPREFFILE_ID, NULL); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
273 diditbefore=1; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
274 return ":"; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
275 } |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
276 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
|
277 ChangedResource((Handle)handle); |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
278 UpdateResFile(homerh); |
|
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 if ( prefrh != -1 ) CloseResFile(prefrh); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
281 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
|
282 |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
283 if ( PyMac_GetFullPath(&dirspec, name) == 0 ) { |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
284 strcat(name, ":"); |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
285 } else { |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
286 /* 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
|
287 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
|
288 name[0] = 0; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
289 (void)getwd(name); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
290 } |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
291 diditbefore = 1; |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
292 return name; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
293 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
294 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
295 #ifndef USE_BUILTIN_PATH |
|
6278
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
296 char * |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
297 PyMac_GetPythonPath() |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
298 { |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
299 short oldrh, prefrh = -1; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
300 char *rv; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
301 int i, newlen; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
302 Str255 pathitem; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
303 int resource_id; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
304 OSErr err; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
305 Handle h; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
306 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
307 oldrh = CurResFile(); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
308 /* |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
309 ** 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
|
310 ** 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
|
311 ** with "our" id and using that for path initialization |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
312 */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
313 UseResFile(PyMac_AppRefNum); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
314 SetResLoad(0); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
315 if ( (h=Get1Resource('STR#', PYTHONPATHOVERRIDE_ID)) ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
316 ReleaseResource(h); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
317 resource_id = PYTHONPATHOVERRIDE_ID; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
318 } else { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
319 resource_id = PYTHONPATH_ID; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
320 } |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
321 SetResLoad(1); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
322 UseResFile(oldrh); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
323 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
324 /* 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
|
325 if ( resource_id != PYTHONPATHOVERRIDE_ID ) |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
326 prefrh = PyMac_OpenPrefFile(); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
327 /* 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
|
328 ** 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
|
329 ** 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
|
330 ** 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
|
331 */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
332 if( (rv = malloc(2)) == NULL ) |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
333 goto out; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
334 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
|
335 |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
336 for(i=1; ; i++) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
337 GetIndString(pathitem, resource_id, i); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
338 if( pathitem[0] == 0 ) |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
339 break; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
340 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
|
341 /* We have to put the directory in place */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
342 char *dir = PyMac_GetPythonDir(); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
343 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
344 newlen = strlen(rv) + strlen(dir) + (pathitem[0]-9) + 2; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
345 if( (rv=realloc(rv, newlen)) == NULL) |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
346 goto out; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
347 strcat(rv, dir); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
348 /* Skip a colon at the beginning of the item */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
349 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
|
350 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
|
351 newlen--; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
352 } else { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
353 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
|
354 } |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
355 rv[newlen-2] = '\n'; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
356 rv[newlen-1] = 0; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
357 } 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
|
358 /* This is the application itself */ |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
359 |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
360 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
|
361 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
|
362 exit(1); |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
363 } |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
364 |
|
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
365 newlen = strlen(rv) + strlen(PyMac_ApplicationPath) + 2; |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
366 if( (rv=realloc(rv, newlen)) == NULL) |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
367 goto out; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
368 strcpy(rv+strlen(rv), PyMac_ApplicationPath); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
369 rv[newlen-2] = '\n'; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
370 rv[newlen-1] = 0; |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
371 |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
372 } else { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
373 /* Use as-is */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
374 newlen = strlen(rv) + (pathitem[0]) + 2; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
375 if( (rv=realloc(rv, newlen)) == NULL) |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
376 goto out; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
377 memcpy(rv+strlen(rv), pathitem+1, pathitem[0]); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
378 rv[newlen-2] = '\n'; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
379 rv[newlen-1] = 0; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
380 } |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
381 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
382 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
|
383 free(rv); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
384 rv = NULL; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
385 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
386 if ( rv ) { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
387 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
|
388 rv++; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
389 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
390 out: |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
391 if ( prefrh != -1) CloseResFile(prefrh); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
392 UseResFile(oldrh); |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
393 return rv; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
394 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
395 #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
|
396 |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
397 void |
|
4238
6c86d9136c09
- Put all options in a struct
Jack Jansen <jack.jansen@cwi.nl>
parents:
4228
diff
changeset
|
398 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
|
399 { |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
400 short oldrh, prefrh = -1; |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
401 Handle handle; |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
402 int size; |
|
6278
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
403 PyMac_PrefRecord *p; |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
404 int action; |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
405 |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
406 |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
407 oldrh = CurResFile(); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
408 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
409 /* Attempt to load overrides from application */ |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
410 UseResFile(PyMac_AppRefNum); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
411 handle = Get1Resource('Popt', PYTHONOPTIONSOVERRIDE_ID); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
412 UseResFile(oldrh); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
413 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
414 /* 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
|
415 if ( handle == NULL ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
416 prefrh = PyMac_OpenPrefFile(); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
417 handle = GetResource('Popt', PYTHONOPTIONS_ID); |
|
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 if ( handle == NULL ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
420 return; |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
421 } |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
422 HLock(handle); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
423 size = GetHandleSize(handle); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
424 p = (PyMac_PrefRecord *)*handle; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
425 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
|
426 *pr = *p; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
427 } else { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
428 action = CautionAlert(BADPREFERENCES_ID, NULL); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
429 if ( action == BADPREF_DELETE ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
430 OSErr err; |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
431 |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
432 RemoveResource(handle); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
433 if ( (err=ResError()) ) printf("RemoveResource: %d\n", err); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
434 if ( prefrh != -1 ) { |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
435 UpdateResFile(prefrh); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
436 if ( (err=ResError()) ) printf("UpdateResFile: %d\n", err); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
437 } |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
438 } else if ( action == BADPREF_QUIT ) |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
439 exit(1); |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
440 } |
|
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
441 HUnlock(handle); |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
442 |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
443 if ( prefrh != -1) CloseResFile(prefrh); |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
444 UseResFile(oldrh); |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
445 } |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
446 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
447 #ifdef USE_GUSI |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
448 void |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
449 PyMac_SetGUSIOptions() |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
450 { |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
451 Handle h; |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
452 short oldrh, prefrh = -1; |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
453 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
454 oldrh = CurResFile(); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
455 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
456 /* Try override from the application resource fork */ |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
457 UseResFile(PyMac_AppRefNum); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
458 h = Get1Resource('GU\267I', GUSIOPTIONSOVERRIDE_ID); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
459 UseResFile(oldrh); |
|
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 /* 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
|
462 if ( h == NULL ) { |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
463 prefrh = PyMac_OpenPrefFile(); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
464 h = GetResource('GU\267I', GUSIOPTIONS_ID); |
|
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 if ( h ) GUSILoadConfiguration(h); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
467 if ( prefrh != -1) CloseResFile(prefrh); |
|
8788
d642e6748d12
Re-indented properly (Just).
Jack Jansen <jack.jansen@cwi.nl>
parents:
8666
diff
changeset
|
468 UseResFile(oldrh); |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
469 } |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
470 #endif /* USE_GUSI */ |
