annotate Mac/Python/macgetpath.c @ 8247:7356d4888a8b legacy-trunk

An applet with Popt and GUSI preferences but without alis resource didn't work, because the resource file chain was incomplete when we tried to open the preference file. Fixed.
author Jack Jansen <jack.jansen@cwi.nl>
date Thu, 07 May 1998 13:08:58 +0000
parents 2984416a1b2b
children 6245b819bdd8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5079
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
1 /***********************************************************
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
2 Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
3 The Netherlands.
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
4
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
5 All Rights Reserved
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
6
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
7 Permission to use, copy, modify, and distribute this software and its
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
8 documentation for any purpose and without fee is hereby granted,
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
9 provided that the above copyright notice appear in all copies and that
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
10 both that copyright notice and this permission notice appear in
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
11 supporting documentation, and that the names of Stichting Mathematisch
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
12 Centrum or CWI or Corporation for National Research Initiatives or
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
13 CNRI not be used in advertising or publicity pertaining to
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
14 distribution of the software without specific, written prior
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
15 permission.
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
16
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
17 While CWI is the initial source for this software, a modified version
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
18 is made available by the Corporation for National Research Initiatives
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
19 (CNRI) at the Internet address ftp://ftp.python.org.
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
20
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
21 STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
22 REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
23 MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
24 CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
25 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
26 PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
27 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
28 PERFORMANCE OF THIS SOFTWARE.
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
29
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
30 ******************************************************************/
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4523
diff changeset
31
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
32 #include "Python.h"
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33 #include "osdefs.h"
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
34 #include "macglue.h"
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
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
68 static void
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;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
72 static FSSpec fss;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
73 short prefdirRefNum;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
74 long prefdirDirID;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
75 Handle namehandle;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
76
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
77 if ( !diditbefore ) {
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
78 if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum,
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
79 &prefdirDirID) != noErr ) {
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
80 /* Something wrong with preferences folder */
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
81 (void)StopAlert(NOPREFDIR_ID, NULL);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
82 exit(1);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
83 }
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
84
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
85 if ( (namehandle=GetNamedResource('STR ', PREFFILENAME_NAME)) == NULL ) {
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
86 (void)StopAlert(NOPREFNAME_ID, NULL);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
87 exit(1);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
88 }
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 HLock(namehandle);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
91 (void)FSMakeFSSpec(prefdirRefNum, prefdirDirID, (unsigned char *)*namehandle, &fss);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
92 HUnlock(namehandle);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
93 ReleaseResource(namehandle);
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
94 diditbefore = 1;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
95 }
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
96 *fssp = fss;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
97 }
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
98
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
99 char *
3750
a22438e94fe9 Old names changed to Py_GetCopyright, etc.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3485
diff changeset
100 Py_GetPath()
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
101 {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
102 /* 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
103 ** - 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
104 ** resource)
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
105 ** - Add :
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 static char *pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
108 char *p, *endp;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
109 int newlen;
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
110 char *curwd;
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
111 #ifndef USE_BUILTIN_PATH
3422
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
112 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
113 #endif
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 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
116 #ifndef USE_BUILTIN_PATH
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
117 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
118 return pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
119 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
120 #endif
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
121 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
122 p = PYTHONPATH;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
123 endp = p;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
124 pythonpath = malloc(2);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
125 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
126 strcpy(pythonpath, ":");
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
127 while (*endp) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
128 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
129 if ( endp == NULL )
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
130 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
131 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
132 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
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 strcat(pythonpath, "\n");
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
135 if ( *p == ':' ) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
136 p++;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
137 strcat(pythonpath, curwd);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
138 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
139 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
140 } else {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
141 /* 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
142 newlen -= strlen(curwd);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
143 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
144 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
145 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
146 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
147 pythonpath[newlen] = '\0';
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
148 p = endp + 1;
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 return pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
151 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
152
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
153
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
154 /*
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
155 ** 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
156 */
3422
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
157 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
158 PyMac_OpenPrefFile()
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
159 {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
160 AliasHandle handle;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
161 FSSpec dirspec;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
162 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
163 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
164
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
165 getpreffilefss(&dirspec);
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
166 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
167 if ( prefrh < 0 ) {
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
168 #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
169 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
170 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
171 exit(1);
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
172 #endif
3410
022474ac2451 Changed MacOS creator code from PYTH to Pyth
Jack Jansen <jack.jansen@cwi.nl>
parents: 3057
diff changeset
173 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
174 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
175 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
176 /* 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
177 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
178 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
179 }
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
180 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
181 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
182 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
183 }
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
184 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
185 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
186 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
187 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
188 exit(1);
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 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
191 UpdateResFile(prefrh);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
192
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
193 } else {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
194 UseResFile(prefrh);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
195 }
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
196 return prefrh;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
197 }
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
198
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
199 /*
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
200 ** 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
201 */
6278
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
202 char *
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
203 PyMac_GetPythonDir()
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
204 {
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
205 static int diditbefore = 0;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
206 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
207 AliasHandle handle;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
208 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
209 Boolean modified = 0;
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
210 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
211
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
212 if ( diditbefore )
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
213 return name;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
214
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
215 oldrh = CurResFile();
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
216
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
217 /* 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
218 UseResFile(PyMac_AppRefNum);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
219 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
220 UseResFile(oldrh);
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
221 if ( handle != NULL ) {
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
222 homerh = PyMac_AppRefNum;
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
223 } else {
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
224 /* 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
225 prefrh = PyMac_OpenPrefFile();
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
226 handle = (AliasHandle)Get1Resource('alis', PYTHONHOME_ID);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
227 if ( handle == NULL ) {
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
228 (void)StopAlert(BADPREFFILE_ID, NULL);
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
229 diditbefore=1;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
230 return ":";
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
231 }
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
232 homerh = prefrh;
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
233 }
8247
7356d4888a8b An applet with Popt and GUSI preferences but without alis resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 6278
diff changeset
234 /* 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
235 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
236 (void)StopAlert(BADPREFFILE_ID, NULL);
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
237 diditbefore=1;
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
238 return ":";
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
239 }
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
240 if ( modified ) {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
241 ChangedResource((Handle)handle);
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
242 UpdateResFile(homerh);
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
243 }
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
244 if ( prefrh != -1 ) CloseResFile(prefrh);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
245 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
246
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
247 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
248 strcat(name, ":");
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
249 } else {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
250 /* 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
251 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
252 name[0] = 0;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
253 (void)getwd(name);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
254 }
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
255 diditbefore = 1;
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
256 return name;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
257 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
258
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
259 #ifndef USE_BUILTIN_PATH
6278
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
260 char *
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
261 PyMac_GetPythonPath()
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
262 {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
263 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
264 char *rv;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
265 int i, newlen;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
266 Str255 pathitem;
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
267 int resource_id;
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
268 OSErr err;
4205
c7994008378d Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents: 3750
diff changeset
269 Handle h;
c7994008378d Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents: 3750
diff changeset
270
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
271 oldrh = CurResFile();
4205
c7994008378d Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents: 3750
diff changeset
272 /*
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
273 ** 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
274 ** 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
275 ** 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
276 */
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
277 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
278 SetResLoad(0);
c7994008378d Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents: 3750
diff changeset
279 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
280 ReleaseResource(h);
c7994008378d Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents: 3750
diff changeset
281 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
282 } else {
c7994008378d Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents: 3750
diff changeset
283 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
284 }
c7994008378d Check that our override pythonpath is actually coming from the
Jack Jansen <jack.jansen@cwi.nl>
parents: 3750
diff changeset
285 SetResLoad(1);
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
286 UseResFile(oldrh);
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
287
4442
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
288 /* 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
289 if ( resource_id != PYTHONPATHOVERRIDE_ID )
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
290 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
291 /* 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
292 ** 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
293 ** 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
294 ** 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
295 */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
296 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
297 goto out;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
298 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
299
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
300 for(i=1; ; i++) {
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
301 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
302 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
303 break;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
304 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
305 /* 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
306 char *dir = PyMac_GetPythonDir();
0549e3428d57 - Get preference filename from a resource
Jack Jansen <jack.jansen@cwi.nl>
parents: 4238
diff changeset
307
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
308 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
309 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
310 goto out;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
311 strcat(rv, dir);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
312 /* 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
313 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
314 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
315 newlen--;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
316 } else {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
317 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
318 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
319 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
320 rv[newlen-1] = 0;
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
321 } 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
322 /* This is the application itself */
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
323
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
324 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
325 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
326 exit(1);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
327 }
4523
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
328
4d0681f7cf6b Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
Jack Jansen <jack.jansen@cwi.nl>
parents: 4442
diff changeset
329 newlen = strlen(rv) + strlen(PyMac_ApplicationPath) + 2;
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
330 if( (rv=realloc(rv, newlen)) == NULL)
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
331 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
332 strcpy(rv+strlen(rv), PyMac_ApplicationPath);
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
333 rv[newlen-2] = '\n';
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
334 rv[newlen-1] = 0;
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
335
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
336 } else {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
337 /* Use as-is */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
338 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
339 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
340 goto out;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
341 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
342 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
343 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
344 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
345 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
346 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
347 free(rv);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
348 rv = NULL;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
349 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
350 if ( rv ) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
351 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
352 rv++;
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 out:
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
355 if ( prefrh != -1) CloseResFile(prefrh);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
356 UseResFile(oldrh);
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
357 return rv;
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 #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
360
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
361 void
4238
6c86d9136c09 - Put all options in a struct
Jack Jansen <jack.jansen@cwi.nl>
parents: 4228
diff changeset
362 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
363 {
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
364 short oldrh, prefrh = -1;
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
365 Handle handle;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
366 int size;
6278
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
367 PyMac_PrefRecord *p;
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
368 int action;
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
369
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
370
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
371 oldrh = CurResFile();
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
372
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
373 /* Attempt to load overrides from application */
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
374 UseResFile(PyMac_AppRefNum);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
375 handle = Get1Resource('Popt', PYTHONOPTIONSOVERRIDE_ID);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
376 UseResFile(oldrh);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
377
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
378 /* 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
379 if ( handle == NULL ) {
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
380 prefrh = PyMac_OpenPrefFile();
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
381 handle = GetResource('Popt', PYTHONOPTIONS_ID);
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
382 }
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
383 if ( handle == NULL ) {
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
384 return;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
385 }
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
386 HLock(handle);
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
387 size = GetHandleSize(handle);
6278
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
388 p = (PyMac_PrefRecord *)*handle;
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
389 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
390 *pr = *p;
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
391 } else {
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
392 action = CautionAlert(BADPREFERENCES_ID, NULL);
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
393 if ( action == BADPREF_DELETE ) {
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
394 OSErr err;
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
395
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
396 RemoveResource(handle);
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
397 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
398 if ( prefrh != -1 ) {
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
399 UpdateResFile(prefrh);
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
400 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
401 }
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
402 } else if ( action == BADPREF_QUIT )
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
403 exit(1);
2984416a1b2b The preference resource now has a version number
Jack Jansen <jack.jansen@cwi.nl>
parents: 5079
diff changeset
404 }
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
405 HUnlock(handle);
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
406
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
407 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
408 UseResFile(oldrh);
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
409 }
4228
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
410
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
411 #ifdef USE_GUSI
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
412 void
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
413 PyMac_SetGUSIOptions()
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
414 {
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
415 Handle h;
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
416 short oldrh, prefrh = -1;
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
417
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
418 oldrh = CurResFile();
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 /* Try override from the application resource fork */
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
421 UseResFile(PyMac_AppRefNum);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
422 h = Get1Resource('GU\267I', GUSIOPTIONSOVERRIDE_ID);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
423 UseResFile(oldrh);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
424
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
425 /* 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
426 if ( h == NULL ) {
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
427 prefrh = PyMac_OpenPrefFile();
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
428 h = GetResource('GU\267I', GUSIOPTIONS_ID);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
429 }
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
430 if ( h ) GUSILoadConfiguration(h);
84444ea3f5f6 - Rationalized override preferences support, by remembering
Jack Jansen <jack.jansen@cwi.nl>
parents: 4205
diff changeset
431 if ( prefrh != -1) CloseResFile(prefrh);
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 #endif /* USE_GUSI */