Mercurial > cpython-lru_cache-weakref
annotate Mac/Python/macgetargv.c @ 3930:52c19ee83a6b legacy-trunk
Guido's 1.4b2 fixes: Py_GetProgramName, Py_GetPrefix and Py_GetExecPrefix.
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Fri, 02 Aug 1996 15:16:16 +0000 |
| parents | 67f5d29d405b |
| children | f49e4057eb68 |
| rev | line source |
|---|---|
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 /*********************************************************** |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 The Netherlands. |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 All Rights Reserved |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 Permission to use, copy, modify, and distribute this software and its |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 documentation for any purpose and without fee is hereby granted, |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 provided that the above copyright notice appear in all copies and that |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 both that copyright notice and this permission notice appear in |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 supporting documentation, and that the names of Stichting Mathematisch |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 Centrum or CWI not be used in advertising or publicity pertaining to |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 distribution of the software without specific, written prior permission. |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 ******************************************************************/ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 /* Construct argc and argv for main() by using Apple Events */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 /* From Jack's implementation for STDWIN */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 #include <stdlib.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 #ifndef SystemSevenOrLater |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 #define SystemSevenOrLater 1 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 #endif |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 #include <Types.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 #include <Files.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 #include <Events.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 #include <Memory.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 #include <Processes.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 #include <Errors.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 #include <AppleEvents.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 #include <AEObjects.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 #include <Desk.h> |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 #include <Fonts.h> |
|
2399
438a8c265eb9
ported back to Think C
Guido van Rossum <guido@python.org>
parents:
2393
diff
changeset
|
44 #include <TextEdit.h> |
|
438a8c265eb9
ported back to Think C
Guido van Rossum <guido@python.org>
parents:
2393
diff
changeset
|
45 #include <Menus.h> |
|
438a8c265eb9
ported back to Think C
Guido van Rossum <guido@python.org>
parents:
2393
diff
changeset
|
46 #include <Dialogs.h> |
|
438a8c265eb9
ported back to Think C
Guido van Rossum <guido@python.org>
parents:
2393
diff
changeset
|
47 #include <Windows.h> |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 #ifdef GENERATINGCFM /* Defined to 0 or 1 in Universal headers */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 #define HAVE_UNIVERSAL_HEADERS |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 #endif |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 |
|
2794
823f3a8ecfe4
Initial port to CodeWarrior CFM68K support (mainly by disabling
Jack Jansen <jack.jansen@cwi.nl>
parents:
2411
diff
changeset
|
53 #ifdef SYMANTEC__CFM68K__ |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 #pragma lib_export on |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 #endif |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 #ifndef HAVE_UNIVERSAL_HEADERS |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 #define NewAEEventHandlerProc(x) (x) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 #define AEEventHandlerUPP EventHandlerProcPtr |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 #endif |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 static int arg_count; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 static char *arg_vector[256]; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 |
|
3215
3b2be811a66a
Export strdup (parsermodule needs it)
Jack Jansen <jack.jansen@cwi.nl>
parents:
3054
diff
changeset
|
65 /* Duplicate a string to the heap. We also export this since it isn't standard |
|
3b2be811a66a
Export strdup (parsermodule needs it)
Jack Jansen <jack.jansen@cwi.nl>
parents:
3054
diff
changeset
|
66 ** and others use it |
|
3b2be811a66a
Export strdup (parsermodule needs it)
Jack Jansen <jack.jansen@cwi.nl>
parents:
3054
diff
changeset
|
67 */ |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 |
|
3215
3b2be811a66a
Export strdup (parsermodule needs it)
Jack Jansen <jack.jansen@cwi.nl>
parents:
3054
diff
changeset
|
69 char * |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 strdup(char *src) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 char *dst = malloc(strlen(src) + 1); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
73 if (dst) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 strcpy(dst, src); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
75 return dst; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 /* Return FSSpec of current application */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2874
diff
changeset
|
80 OSErr |
|
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2874
diff
changeset
|
81 PyMac_process_location(FSSpec *applicationSpec) |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
82 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 ProcessSerialNumber currentPSN; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
84 ProcessInfoRec info; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
85 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 currentPSN.highLongOfPSN = 0; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 currentPSN.lowLongOfPSN = kCurrentProcess; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 info.processInfoLength = sizeof(ProcessInfoRec); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 info.processName = NULL; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 info.processAppSpec = applicationSpec; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 return GetProcessInformation(¤tPSN, &info); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
94 /* Given an FSSpec, return the FSSpec of the parent folder */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
95 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
96 static OSErr |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
97 get_folder_parent (FSSpec * fss, FSSpec * parent) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
98 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
99 CInfoPBRec rec; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
100 short err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
101 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
102 * parent = * fss; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
103 rec.hFileInfo.ioNamePtr = parent->name; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
104 rec.hFileInfo.ioVRefNum = parent->vRefNum; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
105 rec.hFileInfo.ioDirID = parent->parID; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
106 rec.hFileInfo.ioFDirIndex = -1; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
107 rec.hFileInfo.ioFVersNum = 0; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
108 if (err = PBGetCatInfoSync (& rec)) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
109 return err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
110 parent->parID = rec.dirInfo.ioDrParID; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
111 /* parent->name[0] = 0; */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 return 0; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
113 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
114 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
115 /* Given an FSSpec return a full, colon-separated pathname */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
116 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
117 static OSErr |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
118 get_full_path (FSSpec *fss, char *buf) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
119 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
120 short err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
121 FSSpec fss_parent, fss_current; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
122 char tmpbuf[256]; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 int plen; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
124 |
|
2794
823f3a8ecfe4
Initial port to CodeWarrior CFM68K support (mainly by disabling
Jack Jansen <jack.jansen@cwi.nl>
parents:
2411
diff
changeset
|
125 #if defined(__MWERKS__) && defined(__CFM68K__) |
|
823f3a8ecfe4
Initial port to CodeWarrior CFM68K support (mainly by disabling
Jack Jansen <jack.jansen@cwi.nl>
parents:
2411
diff
changeset
|
126 return -1; /* get_folder_parent doesn't work */ |
|
823f3a8ecfe4
Initial port to CodeWarrior CFM68K support (mainly by disabling
Jack Jansen <jack.jansen@cwi.nl>
parents:
2411
diff
changeset
|
127 #endif |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
128 fss_current = *fss; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
129 plen = fss_current.name[0]; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
130 memcpy(buf, &fss_current.name[1], plen); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
131 buf[plen] = 0; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
132 while (fss_current.parID > 1) { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
133 /* Get parent folder name */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
134 if (err = get_folder_parent(&fss_current, &fss_parent)) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
135 return err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
136 fss_current = fss_parent; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
137 /* Prepend path component just found to buf */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
138 plen = fss_current.name[0]; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
139 if (strlen(buf) + plen + 1 > 256) { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
140 /* Oops... Not enough space (shouldn't happen) */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
141 *buf = 0; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
142 return -1; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
143 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
144 memcpy(tmpbuf, &fss_current.name[1], plen); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
145 tmpbuf[plen] = ':'; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
146 strcpy(&tmpbuf[plen+1], buf); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
147 strcpy(buf, tmpbuf); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
148 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
149 return 0; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
150 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
151 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
152 /* Return the full program name */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
153 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
154 static char * |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
155 get_application_name() |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 static char appname[256]; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
158 FSSpec appspec; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
159 |
|
3054
2cb1416010b3
Python will now attempt (again) to create at least a minimal
Jack Jansen <jack.jansen@cwi.nl>
parents:
2874
diff
changeset
|
160 if (PyMac_process_location(&appspec)) |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
161 return NULL; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
162 if (get_full_path(&appspec, appname)) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
163 return NULL; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
164 return appname; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
165 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
166 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
167 /* Check that there aren't any args remaining in the event */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
168 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
169 static OSErr |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
170 get_missing_params(AppleEvent *theAppleEvent) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
171 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
172 DescType theType; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
173 Size actualSize; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
174 OSErr err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
175 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
176 err = AEGetAttributePtr(theAppleEvent, keyMissedKeywordAttr, typeWildCard, |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
177 &theType, nil, 0, &actualSize); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
178 if (err == errAEDescNotFound) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
179 return noErr; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
180 else |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
181 return errAEEventNotHandled; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
182 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
183 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
184 static int got_one; /* Flag that we can stop getting events */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
185 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
186 /* Handle the Print or Quit events (by failing) */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
187 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
188 static pascal OSErr |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
189 handle_not(AppleEvent *theAppleEvent, AppleEvent *reply, long refCon) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
190 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
191 #pragma unused (reply, refCon) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
192 got_one = 1; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
193 return errAEEventNotHandled; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
194 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
195 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
196 /* Handle the Open Application event (by ignoring it) */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
197 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
198 static pascal OSErr |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
199 handle_open_app(AppleEvent *theAppleEvent, AppleEvent *reply, long refCon) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
200 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
201 #pragma unused (reply, refCon) |
|
3249
1cf6e10522e0
Continue looking for "open doc" events even after "open app". This
Jack Jansen <jack.jansen@cwi.nl>
parents:
3215
diff
changeset
|
202 #if 0 |
|
1cf6e10522e0
Continue looking for "open doc" events even after "open app". This
Jack Jansen <jack.jansen@cwi.nl>
parents:
3215
diff
changeset
|
203 /* Test by Jack: would removing this facilitate debugging? */ |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
204 got_one = 1; |
|
3249
1cf6e10522e0
Continue looking for "open doc" events even after "open app". This
Jack Jansen <jack.jansen@cwi.nl>
parents:
3215
diff
changeset
|
205 #endif |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
206 return get_missing_params(theAppleEvent); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
207 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
208 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
209 /* Handle the Open Document event, by adding an argument */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
210 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
211 static pascal OSErr |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
212 handle_open_doc(AppleEvent *theAppleEvent, AppleEvent *reply, long refCon) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
213 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
214 #pragma unused (reply, refCon) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
215 OSErr err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
216 AEDescList doclist; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
217 AEKeyword keywd; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
218 DescType rttype; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
219 long i, ndocs, size; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
220 FSSpec fss; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
221 char path[256]; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
222 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
223 got_one = 1; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
224 if (err = AEGetParamDesc(theAppleEvent, |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
225 keyDirectObject, typeAEList, &doclist)) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
226 return err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
227 if (err = get_missing_params(theAppleEvent)) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
228 return err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
229 if (err = AECountItems(&doclist, &ndocs)) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
230 return err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
231 for(i = 1; i <= ndocs; i++) { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
232 err = AEGetNthPtr(&doclist, i, typeFSS, |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
233 &keywd, &rttype, &fss, sizeof(fss), &size); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
234 if (err) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
235 break; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
236 get_full_path(&fss, path); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
237 arg_vector[arg_count++] = strdup(path); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
238 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
239 return err; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
240 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
241 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
242 /* Install standard core event handlers */ |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
243 AEEventHandlerUPP open_doc_upp; |
|
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
244 AEEventHandlerUPP open_app_upp; |
|
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
245 AEEventHandlerUPP not_upp; |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
246 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
247 static void |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
248 set_ae_handlers() |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
249 { |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
250 open_doc_upp = NewAEEventHandlerProc(handle_open_doc); |
|
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
251 open_app_upp = NewAEEventHandlerProc(handle_open_app); |
|
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
252 not_upp = NewAEEventHandlerProc(handle_not); |
|
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
253 |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
254 AEInstallEventHandler(kCoreEventClass, kAEOpenApplication, |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
255 open_app_upp, 0L, false); |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
256 AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments, |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
257 open_doc_upp, 0L, false); |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
258 AEInstallEventHandler(kCoreEventClass, kAEPrintDocuments, |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
259 not_upp, 0L, false); |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
260 AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
261 not_upp, 0L, false); |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
262 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
263 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
264 /* Uninstall standard core event handlers */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
265 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
266 static void |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
267 reset_ae_handlers() |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
268 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
269 AERemoveEventHandler(kCoreEventClass, kAEOpenApplication, |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
270 open_app_upp, false); |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
271 AERemoveEventHandler(kCoreEventClass, kAEOpenDocuments, |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
272 open_doc_upp, false); |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
273 AERemoveEventHandler(kCoreEventClass, kAEPrintDocuments, |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
274 not_upp, false); |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
275 AERemoveEventHandler(kCoreEventClass, kAEQuitApplication, |
|
2874
927f4839fbfa
Un-installing of AE handlers fixed (AE is very picky that you specify
Jack Jansen <jack.jansen@cwi.nl>
parents:
2794
diff
changeset
|
276 not_upp, false); |
|
2393
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
277 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
278 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
279 /* Wait for events until a core event has been handled */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
280 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
281 static void |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
282 event_loop() |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
283 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
284 EventRecord event; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
285 int n; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
286 int ok; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
287 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
288 got_one = 0; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
289 for (n = 0; n < 100 && !got_one; n++) { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
290 SystemTask(); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
291 ok = GetNextEvent(everyEvent, &event); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
292 if (ok && event.what == kHighLevelEvent) { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
293 AEProcessAppleEvent(&event); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
294 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
295 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
296 } |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
297 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
298 /* Get the argv vector, return argc */ |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
299 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
300 int |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
301 PyMac_GetArgv(pargv) |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
302 char ***pargv; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
303 { |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
304 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
305 arg_count = 0; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
306 arg_vector[arg_count++] = strdup(get_application_name()); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
307 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
308 set_ae_handlers(); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
309 event_loop(); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
310 reset_ae_handlers(); |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
311 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
312 arg_vector[arg_count] = NULL; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
313 |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
314 *pargv = arg_vector; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
315 return arg_count; |
|
b156bf4be62f
get argc/argv from AppleEvents
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
316 } |
