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
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
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
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
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
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
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 */