Mercurial > cpython-lru_cache-weakref
annotate Mac/Python/macgetpath.c @ 8666:6245b819bdd8 legacy-trunk
If the preference filename resource is empty don't try to open or
create the preferences file. This is so that frozen programs don't
interfere with an existing Python installation, or leave turds in the
Preferences folder.
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Mon, 13 Jul 1998 13:38:29 +0000 |
| parents | 7356d4888a8b |
| children | d642e6748d12 |
| 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; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
74 short prefdirRefNum; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
75 long prefdirDirID; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
76 Handle namehandle; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
77 |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
78 if ( !diditbefore ) { |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
79 if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum, |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
80 &prefdirDirID) != noErr ) { |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
81 /* Something wrong with preferences folder */ |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
82 (void)StopAlert(NOPREFDIR_ID, NULL); |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
83 exit(1); |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
84 } |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
85 |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
86 if ( (namehandle=GetNamedResource('STR ', PREFFILENAME_NAME)) == NULL ) { |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
87 (void)StopAlert(NOPREFNAME_ID, NULL); |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
88 exit(1); |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
89 } |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
90 |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
91 HLock(namehandle); |
|
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
|
92 if ( **namehandle == '\0' ) { |
|
6245b819bdd8
If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents:
8247
diff
changeset
|
93 /* Empty string means don't use preferences file */ |
|
6245b819bdd8
If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents:
8247
diff
changeset
|
94 rv = 0; |
|
6245b819bdd8
If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents:
8247
diff
changeset
|
95 } else { |
|
6245b819bdd8
If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents:
8247
diff
changeset
|
96 /* There is a filename, construct the fsspec */ |
|
6245b819bdd8
If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents:
8247
diff
changeset
|
97 (void)FSMakeFSSpec(prefdirRefNum, prefdirDirID, (unsigned char *)*namehandle, &fss); |
|
6245b819bdd8
If the preference filename resource is empty don't try to open or
Jack Jansen <jack.jansen@cwi.nl>
parents:
8247
diff
changeset
|
98 } |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
99 HUnlock(namehandle); |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
100 ReleaseResource(namehandle); |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
101 diditbefore = 1; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
102 } |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
103 *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
|
104 return rv; |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
105 } |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
106 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
107 char * |
|
3750
a22438e94fe9
Old names changed to Py_GetCopyright, etc.
Jack Jansen <jack.jansen@cwi.nl>
parents:
3485
diff
changeset
|
108 Py_GetPath() |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
109 { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
110 /* 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
|
111 ** - 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
|
112 ** resource) |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
113 ** - Add : |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
114 */ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
115 static char *pythonpath; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
116 char *p, *endp; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
117 int newlen; |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
118 char *curwd; |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
119 #ifndef USE_BUILTIN_PATH |
| 3422 | 120 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
|
121 #endif |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
122 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
123 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
|
124 #ifndef USE_BUILTIN_PATH |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
125 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
|
126 return pythonpath; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
127 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
|
128 #endif |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
129 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
|
130 p = PYTHONPATH; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
131 endp = p; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
132 pythonpath = malloc(2); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
133 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
|
134 strcpy(pythonpath, ":"); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
135 while (*endp) { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
136 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
|
137 if ( endp == NULL ) |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
138 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
|
139 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
|
140 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
|
141 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
|
142 strcat(pythonpath, "\n"); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
143 if ( *p == ':' ) { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
144 p++; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
145 strcat(pythonpath, curwd); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
146 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
|
147 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
|
148 } else { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
149 /* 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
|
150 newlen -= strlen(curwd); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
151 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
|
152 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
|
153 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
|
154 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
155 pythonpath[newlen] = '\0'; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
156 p = endp + 1; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
157 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
158 return pythonpath; |
|
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 |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
161 |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
162 /* |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
163 ** 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
|
164 */ |
| 3422 | 165 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
|
166 PyMac_OpenPrefFile() |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
167 { |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
168 AliasHandle handle; |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
169 FSSpec dirspec; |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
170 short prefrh; |
|
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
|
171 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
|
172 |
|
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
|
173 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
|
174 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
|
175 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
|
176 if ( prefrh < 0 ) { |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
177 #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
|
178 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
|
179 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
|
180 exit(1); |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
181 #endif |
|
3410
022474ac2451
Changed MacOS creator code from PYTH to Pyth
Jack Jansen <jack.jansen@cwi.nl>
parents:
3057
diff
changeset
|
182 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
|
183 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
|
184 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
|
185 /* 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
|
186 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
|
187 exit(1); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
188 } |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
189 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
|
190 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
|
191 exit(1); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
192 } |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
193 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
|
194 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
|
195 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
|
196 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
|
197 exit(1); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
198 } |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
199 AddResource((Handle)handle, 'alis', PYTHONHOME_ID, "\p"); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
200 UpdateResFile(prefrh); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
201 |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
202 } else { |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
203 UseResFile(prefrh); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
204 } |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
205 return prefrh; |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
206 } |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
207 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
208 /* |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
209 ** 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
|
210 */ |
|
6278
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
211 char * |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
212 PyMac_GetPythonDir() |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
213 { |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
214 static int diditbefore = 0; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
215 static char name[256] = {':', '\0'}; |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
216 AliasHandle handle; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
217 FSSpec dirspec; |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
218 Boolean modified = 0; |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
219 short oldrh, prefrh = -1, homerh; |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
220 |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
221 if ( diditbefore ) |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
222 return name; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
223 |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
224 oldrh = CurResFile(); |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
225 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
226 /* First look for an override in the application file */ |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
227 UseResFile(PyMac_AppRefNum); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
228 handle = (AliasHandle)Get1Resource('alis', PYTHONHOMEOVERRIDE_ID); |
|
8247
7356d4888a8b
An applet with Popt and GUSI preferences but without alis resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
6278
diff
changeset
|
229 UseResFile(oldrh); |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
230 if ( handle != NULL ) { |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
231 homerh = PyMac_AppRefNum; |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
232 } else { |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
233 /* Try to open preferences file in the preferences folder. */ |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
234 prefrh = PyMac_OpenPrefFile(); |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
235 handle = (AliasHandle)Get1Resource('alis', PYTHONHOME_ID); |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
236 if ( handle == NULL ) { |
|
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
|
237 /* (void)StopAlert(BADPREFFILE_ID, NULL); */ |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
238 diditbefore=1; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
239 return ":"; |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
240 } |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
241 homerh = prefrh; |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
242 } |
|
8247
7356d4888a8b
An applet with Popt and GUSI preferences but without alis resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
6278
diff
changeset
|
243 /* It exists. Resolve it (possibly updating it) */ |
|
7356d4888a8b
An applet with Popt and GUSI preferences but without alis resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
6278
diff
changeset
|
244 if ( ResolveAlias(NULL, handle, &dirspec, &modified) != noErr ) { |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
245 (void)StopAlert(BADPREFFILE_ID, NULL); |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
246 diditbefore=1; |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
247 return ":"; |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
248 } |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
249 if ( modified ) { |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
250 ChangedResource((Handle)handle); |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
251 UpdateResFile(homerh); |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
252 } |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
253 if ( prefrh != -1 ) CloseResFile(prefrh); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
254 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
|
255 |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
256 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
|
257 strcat(name, ":"); |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
258 } else { |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2984
diff
changeset
|
259 /* 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
|
260 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
|
261 name[0] = 0; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
262 (void)getwd(name); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
263 } |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
264 diditbefore = 1; |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
265 return name; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
266 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
267 |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
268 #ifndef USE_BUILTIN_PATH |
|
6278
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
269 char * |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
270 PyMac_GetPythonPath() |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
271 { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
272 short oldrh, prefrh = -1; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
273 char *rv; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
274 int i, newlen; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
275 Str255 pathitem; |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
276 int resource_id; |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
277 OSErr err; |
|
4205
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
278 Handle h; |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
279 |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
280 oldrh = CurResFile(); |
|
4205
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
281 /* |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
282 ** This is a bit tricky. We check here whether the application file |
|
4205
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
283 ** contains an override. This is to forestall us finding another STR# resource |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
284 ** with "our" id and using that for path initialization |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
285 */ |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
286 UseResFile(PyMac_AppRefNum); |
|
4205
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
287 SetResLoad(0); |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
288 if ( (h=Get1Resource('STR#', PYTHONPATHOVERRIDE_ID)) ) { |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
289 ReleaseResource(h); |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
290 resource_id = PYTHONPATHOVERRIDE_ID; |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
291 } else { |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
292 resource_id = PYTHONPATH_ID; |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
293 } |
|
c7994008378d
Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents:
3750
diff
changeset
|
294 SetResLoad(1); |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
295 UseResFile(oldrh); |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
296 |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
297 /* Open the preferences file only if there is no override */ |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
298 if ( resource_id != PYTHONPATHOVERRIDE_ID ) |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
299 prefrh = PyMac_OpenPrefFile(); |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
300 /* At this point, we may or may not have the preferences file open, and it |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
301 ** may or may not contain a sys.path STR# resource. We don't care, if it doesn't |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
302 ** exist we use the one from the application (the default). |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
303 ** We put an initial '\n' in front of the path that we don't return to the caller |
|
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 if( (rv = malloc(2)) == NULL ) |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
306 goto out; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
307 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
|
308 |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
309 for(i=1; ; i++) { |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
310 GetIndString(pathitem, resource_id, i); |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
311 if( pathitem[0] == 0 ) |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
312 break; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
313 if ( pathitem[0] >= 9 && strncmp((char *)pathitem+1, "$(PYTHON)", 9) == 0 ) { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
314 /* We have to put the directory in place */ |
|
4442
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
315 char *dir = PyMac_GetPythonDir(); |
|
0549e3428d57
- Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents:
4238
diff
changeset
|
316 |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
317 newlen = strlen(rv) + strlen(dir) + (pathitem[0]-9) + 2; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
318 if( (rv=realloc(rv, newlen)) == NULL) |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
319 goto out; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
320 strcat(rv, dir); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
321 /* Skip a colon at the beginning of the item */ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
322 if ( pathitem[0] > 9 && pathitem[1+9] == ':' ) { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
323 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
|
324 newlen--; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
325 } else { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
326 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
|
327 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
328 rv[newlen-2] = '\n'; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
329 rv[newlen-1] = 0; |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
330 } else if ( pathitem[0] >= 14 && strncmp((char *)pathitem+1, "$(APPLICATION)", 14) == 0 ) { |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
331 /* This is the application itself */ |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
332 |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
333 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
|
334 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
|
335 exit(1); |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
336 } |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
337 |
|
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
338 newlen = strlen(rv) + strlen(PyMac_ApplicationPath) + 2; |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
339 if( (rv=realloc(rv, newlen)) == NULL) |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
340 goto out; |
|
4523
4d0681f7cf6b
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents:
4442
diff
changeset
|
341 strcpy(rv+strlen(rv), PyMac_ApplicationPath); |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
342 rv[newlen-2] = '\n'; |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
343 rv[newlen-1] = 0; |
|
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
344 |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
345 } else { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
346 /* Use as-is */ |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
347 newlen = strlen(rv) + (pathitem[0]) + 2; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
348 if( (rv=realloc(rv, newlen)) == NULL) |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
349 goto out; |
|
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, pathitem[0]); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
351 rv[newlen-2] = '\n'; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
352 rv[newlen-1] = 0; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
353 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
354 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
355 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
|
356 free(rv); |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
357 rv = NULL; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
358 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
359 if ( rv ) { |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
360 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
|
361 rv++; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
362 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
363 out: |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
364 if ( prefrh != -1) CloseResFile(prefrh); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
365 UseResFile(oldrh); |
|
2984
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
366 return rv; |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
367 } |
|
4c1d80953950
macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
368 #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
|
369 |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
370 void |
|
4238
6c86d9136c09
- Put all options in a struct
Jack Jansen <jack.jansen@cwi.nl>
parents:
4228
diff
changeset
|
371 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
|
372 { |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
373 short oldrh, prefrh = -1; |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
374 Handle handle; |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
375 int size; |
|
6278
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
376 PyMac_PrefRecord *p; |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
377 int action; |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
378 |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
379 |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
380 oldrh = CurResFile(); |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
381 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
382 /* Attempt to load overrides from application */ |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
383 UseResFile(PyMac_AppRefNum); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
384 handle = Get1Resource('Popt', PYTHONOPTIONSOVERRIDE_ID); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
385 UseResFile(oldrh); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
386 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
387 /* Otherwise get options from prefs file or any other open resource file */ |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
388 if ( handle == NULL ) { |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
389 prefrh = PyMac_OpenPrefFile(); |
|
3485
61f19a7b1ff1
Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents:
3422
diff
changeset
|
390 handle = GetResource('Popt', PYTHONOPTIONS_ID); |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
391 } |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
392 if ( handle == NULL ) { |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
393 return; |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
394 } |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
395 HLock(handle); |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
396 size = GetHandleSize(handle); |
|
6278
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
397 p = (PyMac_PrefRecord *)*handle; |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
398 if ( p->version == POPT_VERSION_CURRENT && size == sizeof(PyMac_PrefRecord) ) { |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
399 *pr = *p; |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
400 } else { |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
401 action = CautionAlert(BADPREFERENCES_ID, NULL); |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
402 if ( action == BADPREF_DELETE ) { |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
403 OSErr err; |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
404 |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
405 RemoveResource(handle); |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
406 if ( (err=ResError()) ) printf("RemoveResource: %d\n", err); |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
407 if ( prefrh != -1 ) { |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
408 UpdateResFile(prefrh); |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
409 if ( (err=ResError()) ) printf("UpdateResFile: %d\n", err); |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
410 } |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
411 } else if ( action == BADPREF_QUIT ) |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
412 exit(1); |
|
2984416a1b2b
The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents:
5079
diff
changeset
|
413 } |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
414 HUnlock(handle); |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
415 |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
416 if ( prefrh != -1) CloseResFile(prefrh); |
|
3411
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
417 UseResFile(oldrh); |
|
14991c4331df
Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents:
3410
diff
changeset
|
418 } |
|
4228
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
419 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
420 #ifdef USE_GUSI |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
421 void |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
422 PyMac_SetGUSIOptions() |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
423 { |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
424 Handle h; |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
425 short oldrh, prefrh = -1; |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
426 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
427 oldrh = CurResFile(); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
428 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
429 /* Try override from the application resource fork */ |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
430 UseResFile(PyMac_AppRefNum); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
431 h = Get1Resource('GU\267I', GUSIOPTIONSOVERRIDE_ID); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
432 UseResFile(oldrh); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
433 |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
434 /* 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
|
435 if ( h == NULL ) { |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
436 prefrh = PyMac_OpenPrefFile(); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
437 h = GetResource('GU\267I', GUSIOPTIONS_ID); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
438 } |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
439 if ( h ) GUSILoadConfiguration(h); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
440 if ( prefrh != -1) CloseResFile(prefrh); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
441 UseResFile(oldrh); |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
442 } |
|
84444ea3f5f6
- Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents:
4205
diff
changeset
|
443 #endif /* USE_GUSI */ |
