annotate Mac/Python/macgetpath.c @ 4019:1dee3e4f67df legacy-trunk

Include config.h
author Jack Jansen <jack.jansen@cwi.nl>
date Mon, 19 Aug 1996 11:36:59 +0000
parents a22438e94fe9
children c7994008378d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
1 #include "Python.h"
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
2 #include "osdefs.h"
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
3
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
4 #include "pythonresources.h"
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
5
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
6
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
7 /* 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
8 ** 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
9 **
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
10 ** 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
11 ** (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
12 ** 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
13 ** Preferences file.
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
14 **
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
15 ** 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
16 ** 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
17 */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
18
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
19 #include <Files.h>
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
20 #include <Aliases.h>
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
21 #include <Folders.h>
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
22 #include <Resources.h>
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
23 #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
24 #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
25
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
26 #define PYTHONPATH "\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
27 :\n\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
28 :Lib\n\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
29 :Lib:stdwin\n\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
30 :Lib:test\n\
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
31 :Lib:mac"
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
32
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
34 char *
3750
a22438e94fe9 Old names changed to Py_GetCopyright, etc.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3485
diff changeset
35 Py_GetPath()
2984
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 /* 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
38 ** - 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
39 ** resource)
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40 ** - Add :
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
41 */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
42 static char *pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
43 char *curwd;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
44 char *p, *endp;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
45 int newlen;
3422
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
46 staticforward char *PyMac_GetPythonDir();
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
47 #ifndef USE_BUILTIN_PATH
3422
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
48 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
49 #endif
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
50
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
51 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
52 curwd = PyMac_GetPythonDir();
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
53 #ifndef USE_BUILTIN_PATH
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
54 if ( pythonpath = PyMac_GetPythonPath(curwd) )
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
55 return pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
56 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
57 #endif
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
58 p = PYTHONPATH;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
59 endp = p;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
60 pythonpath = malloc(2);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
61 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
62 strcpy(pythonpath, ":");
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
63 while (*endp) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
64 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
65 if ( endp == NULL )
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
66 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
67 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
68 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
69 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
70 strcat(pythonpath, "\n");
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
71 if ( *p == ':' ) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
72 p++;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
73 strcat(pythonpath, curwd);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
74 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
75 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
76 } else {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
77 /* 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
78 newlen -= strlen(curwd);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
79 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
80 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
81 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
82 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
83 pythonpath[newlen] = '\0';
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
84 p = endp + 1;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
85 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
86 return pythonpath;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
87 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
88
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
89 /*
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
90 ** 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
91 */
3422
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
92 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
93 PyMac_OpenPrefFile()
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
94 {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
95 AliasHandle handle;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
96 FSSpec dirspec;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
97 short prefrh;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
98 short prefdirRefNum;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
99 long prefdirDirID;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
100 short action;
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
101 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
102
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
103 if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum,
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
104 &prefdirDirID) != noErr ) {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
105 /* Something wrong with preferences folder */
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
106 (void)StopAlert(NOPREFDIR_ID, NULL);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
107 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
108 }
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
109
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
110 (void)FSMakeFSSpec(prefdirRefNum, prefdirDirID, "\pPython Preferences", &dirspec);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
111 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
112 if ( prefrh < 0 ) {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
113 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
114 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
115 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
116
3410
022474ac2451 Changed MacOS creator code from PYTH to Pyth
Jack Jansen <jack.jansen@cwi.nl>
parents: 3057
diff changeset
117 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
118 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
119 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
120 /* 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
121 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
122 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
123 }
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
124 if ( (err=PyMac_process_location(&dirspec)) != 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
125 printf("Cannot get FSSpec for application, 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
126 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
127 }
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
128 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
129 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
130 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
131 exit(1);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
132 }
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
133 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
134 UpdateResFile(prefrh);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
135
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
136 } else {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
137 UseResFile(prefrh);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
138 }
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
139 return prefrh;
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
140 }
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
141
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
142 /*
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
143 ** 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
144 */
3422
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
145 static char *
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
146 PyMac_GetPythonDir()
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
147 {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
148 static char name[256];
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
149 AliasHandle handle;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
150 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
151 Boolean modified = 0;
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
152 short oldrh, prefrh;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
153
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
154 oldrh = CurResFile();
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
155 /*
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
156 ** First look for an override of the preferences file
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
157 */
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
158 handle = (AliasHandle)GetResource('alis', PYTHONHOMEOVERRIDE_ID);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
159 if ( handle != NULL ) {
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
160 prefrh = oldrh;
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
161 } else {
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
162 /*
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
163 ** Remember old resource file and try to open preferences file
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
164 ** in the preferences folder.
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
165 */
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
166 prefrh = PyMac_OpenPrefFile();
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
167 /* So, we've opened our preferences file, we hope. Look for the alias */
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
168 handle = (AliasHandle)Get1Resource('alis', PYTHONHOME_ID);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
169 if ( handle == NULL ) {
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
170 (void)StopAlert(BADPREFFILE_ID, NULL);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
171 exit(1);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
172 }
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
173 }
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
174 /* It exists. Resolve it (possibly updating it) */
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
175 if ( ResolveAlias(NULL, handle, &dirspec, &modified) != noErr ) {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
176 (void)StopAlert(BADPREFFILE_ID, NULL);
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
177 exit(1);
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
178 }
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
179 if ( modified ) {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
180 ChangedResource((Handle)handle);
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
181 UpdateResFile(prefrh);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
182 }
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
183 if ( prefrh != oldrh ) {
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
184 CloseResFile(prefrh);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
185 UseResFile(oldrh);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
186 }
3054
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
187
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
188 if ( nfullpath(&dirspec, name) == 0 ) {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
189 strcat(name, ":");
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
190 } else {
2cb1416010b3 Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents: 2984
diff changeset
191 /* 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
192 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
193 name[0] = 0;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
194 (void)getwd(name);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
195 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
196 return name;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
197 }
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 #ifndef USE_BUILTIN_PATH
3422
67f5d29d405b - Reorganized init code
Jack Jansen <jack.jansen@cwi.nl>
parents: 3411
diff changeset
200 static char *
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
201 PyMac_GetPythonPath(dir)
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
202 char *dir;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
203 {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
204 FSSpec dirspec;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
205 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
206 short prefdirRefNum;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
207 long prefdirDirID;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
208 char *rv;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
209 int i, newlen;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
210 Str255 pathitem;
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
211 int resource_id;
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
212 OSErr err;
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
213
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
214 /*
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
215 ** Remember old resource file and try to open preferences file
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
216 ** in the preferences folder.
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
217 */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
218 oldrh = CurResFile();
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
219 if ( FindFolder(kOnSystemDisk, 'pref', kDontCreateFolder, &prefdirRefNum,
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
220 &prefdirDirID) == noErr ) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
221 (void)FSMakeFSSpec(prefdirRefNum, prefdirDirID, "\pPython Preferences", &dirspec);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
222 prefrh = FSpOpenResFile(&dirspec, fsRdWrShPerm);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
223 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
224 /* 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
225 ** 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
226 ** 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
227 ** 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
228 */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
229 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
230 goto out;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
231 strcpy(rv, "\n");
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
232 /*
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
233 ** See whether there's an override.
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
234 */
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
235 GetIndString(pathitem, PYTHONPATHOVERRIDE_ID, 1);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
236 if ( pathitem[0] )
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
237 resource_id = PYTHONPATHOVERRIDE_ID;
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
238 else
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
239 resource_id = PYTHONPATH_ID;
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
240 for(i=1; ; i++) {
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
241 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
242 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
243 break;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
244 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
245 /* We have to put the directory in place */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
246 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
247 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
248 goto out;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
249 strcat(rv, dir);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
250 /* 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
251 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
252 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
253 newlen--;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
254 } else {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
255 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
256 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
257 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
258 rv[newlen-1] = 0;
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
259 } 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
260 /* This is the application itself */
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
261 char fullname[256];
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
262
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
263 if ( (err=PyMac_process_location(&dirspec)) != 0 ) {
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
264 printf("Cannot get FSSpec for application, error %d\n", err);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
265 exit(1);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
266 }
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
267 if ( nfullpath(&dirspec, fullname) != 0 ) {
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
268 printf("Cannot convert application fsspec to path\n");
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
269 exit(1);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
270 }
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
271 newlen = strlen(rv) + strlen(fullname) + 2;
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
272 if( (rv=realloc(rv, newlen)) == NULL)
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
273 goto out;
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
274 strcpy(rv+strlen(rv), fullname);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
275 rv[newlen-2] = '\n';
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
276 rv[newlen-1] = 0;
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
277
2984
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
278 } else {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
279 /* Use as-is */
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
280 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
281 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
282 goto out;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
283 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
284 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
285 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
286 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
287 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
288 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
289 free(rv);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
290 rv = NULL;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
291 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
292 if ( rv ) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
293 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
294 rv++;
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 out:
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
297 if ( prefrh ) {
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
298 CloseResFile(prefrh);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
299 UseResFile(oldrh);
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
300 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
301 return rv;
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
302 }
4c1d80953950 macgetpath - sys.path setting code factored out of config.c and
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
303 #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
304
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
305 void
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
306 PyMac_PreferenceOptions(int *inspect, int *verbose, int *suppress_print,
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
307 int *unbuffered, int *debugging, int *keep_normal,
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
308 int *keep_error)
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
309 {
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
310 short oldrh, prefrh;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
311 Handle handle;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
312 int size;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
313 char *p;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
314
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
315
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
316 oldrh = CurResFile();
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
317 prefrh = PyMac_OpenPrefFile();
3485
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
318 handle = GetResource('Popt', PYTHONOPTIONSOVERRIDE_ID);
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
319 if ( handle == NULL )
61f19a7b1ff1 Added support for override preferences
Jack Jansen <jack.jansen@cwi.nl>
parents: 3422
diff changeset
320 handle = GetResource('Popt', PYTHONOPTIONS_ID);
3411
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
321 if ( handle == NULL ) {
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
322 return;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
323 }
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
324 HLock(handle);
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
325 size = GetHandleSize(handle);
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
326 p = (char *)*handle;
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
327
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
328 if ( size > POPT_INSPECT ) *inspect = p[POPT_INSPECT];
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
329 if ( size > POPT_VERBOSE ) *verbose = p[POPT_VERBOSE];
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
330 if ( size > POPT_SUPPRESS ) *suppress_print = p[POPT_SUPPRESS];
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
331 if ( size > POPT_UNBUFFERED ) *unbuffered = p[POPT_UNBUFFERED];
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
332 if ( size > POPT_DEBUGGING ) *debugging = p[POPT_DEBUGGING];
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
333 if ( size > POPT_KEEPNORM ) *keep_normal = p[POPT_KEEPNORM];
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
334 if ( size > POPT_KEEPERR ) *keep_error = p[POPT_KEEPERR];
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
335
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
336 HUnlock(handle);
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
337
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
338 CloseResFile(prefrh);
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
339 UseResFile(oldrh);
14991c4331df Store default startup options in preference file or
Jack Jansen <jack.jansen@cwi.nl>
parents: 3410
diff changeset
340 }