annotate Mac/Modules/MacOS.c @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents 1dcb19216b64
children b2625acc2484
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 /***********************************************************
5079
d6b292a33cfe Added/updated copyright notices
Jack Jansen <jack.jansen@cwi.nl>
parents: 4524
diff changeset
2 Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
2091
b4d982c648bb 1995 copyright
Guido van Rossum <guido@python.org>
parents: 2033
diff changeset
3 The Netherlands.
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 All Rights Reserved
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 Permission to use, copy, modify, and distribute this software and its
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 documentation for any purpose and without fee is hereby granted,
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 provided that the above copyright notice appear in all copies and that
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 both that copyright notice and this permission notice appear in
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 supporting documentation, and that the names of Stichting Mathematisch
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 Centrum or CWI not be used in advertising or publicity pertaining to
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 distribution of the software without specific, written prior permission.
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
14
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
22
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 ******************************************************************/
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
24
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 /* Macintosh OS-specific interface */
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
26
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 #include "Python.h"
30982
e543b3f0d906 Got rid of macglue.h, replacing it by pymactoolbox.h where relevant.
Jack Jansen <jack.jansen@cwi.nl>
parents: 30975
diff changeset
28 #include "pymactoolbox.h"
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
29
17864
be969e717b91 Include Carbon/Carbon.h in stead of universal headers, if appropriate.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17813
diff changeset
30 #include <Carbon/Carbon.h>
28010
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
31 #include <ApplicationServices/ApplicationServices.h>
2262
03bd79432f06 - Moved interrupt code to macglue.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 2251
diff changeset
32
50445
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
33 #include <arpa/inet.h> /* for ntohl, htonl */
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
34
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
35
48220
b219d55404e7 Another fix for 4-way universal builds, use the right #ifndef guard
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47527
diff changeset
36 #ifndef HAVE_OSX105_SDK
47501
c9a5f2eb720c Fix build issue on OSX 10.4
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47473
diff changeset
37 typedef SInt16 FSIORefNum;
c9a5f2eb720c Fix build issue on OSX 10.4
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47473
diff changeset
38 #endif
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
39
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 static PyObject *MacOS_Error; /* Exception MacOS.Error */
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
41
19841
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 19066
diff changeset
42 #define PATHNAMELEN 1024
d8dd75e3b304 Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
Jack Jansen <jack.jansen@cwi.nl>
parents: 19066
diff changeset
43
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
44 /* ----------------------------------------------------- */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
45
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
46 /* Declarations for objects of type Resource fork */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
47
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
48 typedef struct {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
49 PyObject_HEAD
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
50 FSIORefNum fRefNum;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
51 int isclosed;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
52 } rfobject;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
53
24280
1598a1e473e2 staticforward bites the dust.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23510
diff changeset
54 static PyTypeObject Rftype;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
55
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
56
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
57
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
58 /* ---------------------------------------------------------------- */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
59
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
60 static void
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
61 do_close(rfobject *self)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
62 {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
63 if (self->isclosed ) return;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
64 (void)FSCloseFork(self->fRefNum);
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
65 self->isclosed = 1;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
66 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
67
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
68 static char rf_read__doc__[] =
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
69 "Read data from resource fork"
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
70 ;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
71
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
72 static PyObject *
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
73 rf_read(rfobject *self, PyObject *args)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
74 {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
75 long n;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
76 PyObject *v;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
77 OSErr err;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
78 ByteCount n2;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
79
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
80 if (self->isclosed) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
81 PyErr_SetString(PyExc_ValueError, "Operation on closed file");
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
82 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
83 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
84
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
85 if (!PyArg_ParseTuple(args, "l", &n))
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
86 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
87
47294
4fe192d48960 Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents: 46967
diff changeset
88 v = PyBytes_FromStringAndSize((char *)NULL, n);
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
89 if (v == NULL)
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
90 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
91
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
92 err = FSReadFork(self->fRefNum, fsAtMark, 0, n, PyString_AsString(v), &n2);
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
93 if (err && err != eofErr) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
94 PyMac_Error(err);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
95 Py_DECREF(v);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
96 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
97 }
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
98 _PyString_Resize(&v, n2);
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
99 return v;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
100 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
101
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
102
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
103 static char rf_write__doc__[] =
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
104 "Write to resource fork"
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
105 ;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
106
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
107 static PyObject *
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
108 rf_write(rfobject *self, PyObject *args)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
109 {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
110 char *buffer;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
111 long size;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
112 OSErr err;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
113
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
114 if (self->isclosed) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
115 PyErr_SetString(PyExc_ValueError, "Operation on closed file");
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
116 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
117 }
5429
ac235c9e6881 - Changed the m# format for PyArg_ParseTuple back to s#
Jack Jansen <jack.jansen@cwi.nl>
parents: 5258
diff changeset
118 if (!PyArg_ParseTuple(args, "s#", &buffer, &size))
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
119 return NULL;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
120 err = FSWriteFork(self->fRefNum, fsAtMark, 0, size, buffer, NULL);
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
121 if (err) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
122 PyMac_Error(err);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
123 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
124 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
125 Py_INCREF(Py_None);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
126 return Py_None;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
127 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
128
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
129
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
130 static char rf_seek__doc__[] =
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
131 "Set file position"
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
132 ;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
133
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
134 static PyObject *
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
135 rf_seek(rfobject *self, PyObject *args)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
136 {
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
137 long amount;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
138 int whence = SEEK_SET;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
139 int mode;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
140 OSErr err;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
141
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
142 if (self->isclosed) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
143 PyErr_SetString(PyExc_ValueError, "Operation on closed file");
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
144 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
145 }
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
146 if (!PyArg_ParseTuple(args, "l|i", &amount, &whence)) {
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
147 return NULL;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
148 }
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
149
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
150 switch (whence) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
151 case SEEK_CUR:
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
152 mode = fsFromMark;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
153 break;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
154 case SEEK_END:
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
155 mode = fsFromLEOF;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
156 break;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
157 case SEEK_SET:
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
158 mode = fsFromStart;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
159 break;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
160 default:
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
161 PyErr_BadArgument();
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
162 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
163 }
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
164
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
165 err = FSSetForkPosition(self->fRefNum, mode, amount);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
166 if (err != noErr) {
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
167 PyMac_Error(err);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
168 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
169 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
170 Py_INCREF(Py_None);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
171 return Py_None;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
172 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
173
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
174
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
175 static char rf_tell__doc__[] =
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
176 "Get file position"
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
177 ;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
178
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
179 static PyObject *
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
180 rf_tell(rfobject *self, PyObject *args)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
181 {
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
182 long long where;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
183 OSErr err;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
184
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
185 if (self->isclosed) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
186 PyErr_SetString(PyExc_ValueError, "Operation on closed file");
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
187 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
188 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
189 if (!PyArg_ParseTuple(args, ""))
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
190 return NULL;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
191
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
192 err = FSGetForkPosition(self->fRefNum, &where);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
193 if (err != noErr) {
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
194 PyMac_Error(err);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
195 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
196 }
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
197 return PyLong_FromLongLong(where);
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
198 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
199
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
200 static char rf_close__doc__[] =
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
201 "Close resource fork"
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
202 ;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
203
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
204 static PyObject *
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
205 rf_close(rfobject *self, PyObject *args)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
206 {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
207 if (!PyArg_ParseTuple(args, ""))
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
208 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
209 do_close(self);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
210 Py_INCREF(Py_None);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
211 return Py_None;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
212 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
213
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
214
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
215 static struct PyMethodDef rf_methods[] = {
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
216 {"read", (PyCFunction)rf_read, 1, rf_read__doc__},
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
217 {"write", (PyCFunction)rf_write, 1, rf_write__doc__},
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
218 {"seek", (PyCFunction)rf_seek, 1, rf_seek__doc__},
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
219 {"tell", (PyCFunction)rf_tell, 1, rf_tell__doc__},
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
220 {"close", (PyCFunction)rf_close, 1, rf_close__doc__},
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
221
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
222 {NULL, NULL} /* sentinel */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
223 };
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
224
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
225 /* ---------- */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
226
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
227
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
228 static rfobject *
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
229 newrfobject(void)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
230 {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
231 rfobject *self;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
232
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
233 self = PyObject_NEW(rfobject, &Rftype);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
234 if (self == NULL)
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
235 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
236 self->isclosed = 1;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
237 return self;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
238 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
239
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
240
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
241 static void
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
242 rf_dealloc(rfobject *self)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
243 {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
244 do_close(self);
23510
82309c7325ef Replaced lots of PyMem_DEL() calls with PyObject_DEL().
Jack Jansen <jack.jansen@cwi.nl>
parents: 22963
diff changeset
245 PyObject_DEL(self);
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
246 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
247
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
248 static PyObject *
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
249 rf_getattr(rfobject *self, char *name)
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
250 {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
251 return Py_FindMethod(rf_methods, (PyObject *)self, name);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
252 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
253
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
254 static char Rftype__doc__[] =
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
255 "Resource fork file object"
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
256 ;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
257
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
258 static PyTypeObject Rftype = {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
259 PyObject_HEAD_INIT(&PyType_Type)
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
260 0, /*ob_size*/
21313
91dd223829c6 Patch supplied by Burton Radons for his own SF bug #487390: Modifying
Guido van Rossum <guido@python.org>
parents: 19841
diff changeset
261 "MacOS.ResourceFork", /*tp_name*/
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
262 sizeof(rfobject), /*tp_basicsize*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
263 0, /*tp_itemsize*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
264 /* methods */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
265 (destructor)rf_dealloc, /*tp_dealloc*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
266 (printfunc)0, /*tp_print*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
267 (getattrfunc)rf_getattr, /*tp_getattr*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
268 (setattrfunc)0, /*tp_setattr*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
269 (cmpfunc)0, /*tp_compare*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
270 (reprfunc)0, /*tp_repr*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
271 0, /*tp_as_number*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
272 0, /*tp_as_sequence*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
273 0, /*tp_as_mapping*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
274 (hashfunc)0, /*tp_hash*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
275 (ternaryfunc)0, /*tp_call*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
276 (reprfunc)0, /*tp_str*/
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
277
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
278 /* Space for future expansion */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
279 0L,0L,0L,0L,
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
280 Rftype__doc__ /* Documentation string */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
281 };
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
282
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
283
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
284 /* End of code for Resource fork objects */
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
285 /* -------------------------------------------------------- */
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
286
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
287 /*----------------------------------------------------------------------*/
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
288 /* Miscellaneous File System Operations */
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
289
28326
3358dfb1b18b GetCreatorAndType and SetCreatorAndType have been undeprecated. Spotted by
Jack Jansen <jack.jansen@cwi.nl>
parents: 28034
diff changeset
290 static char getcrtp_doc[] = "Get MacOS 4-char creator and type for a file";
5713
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
291
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
292 static PyObject *
2227
e53d019e7d47 Got rid of {Get,Set}FileType in favor of {Get,Set}CreatorAndType --
Guido van Rossum <guido@python.org>
parents: 2221
diff changeset
293 MacOS_GetCreatorAndType(PyObject *self, PyObject *args)
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
294 {
2227
e53d019e7d47 Got rid of {Get,Set}FileType in favor of {Get,Set}CreatorAndType --
Guido van Rossum <guido@python.org>
parents: 2221
diff changeset
295 PyObject *creator, *type, *res;
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
296 OSErr err;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
297 FSRef ref;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
298 FSCatalogInfo cataloginfo;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
299 FileInfo* finfo;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
300
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
301 if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSRef, &ref)) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
302 #ifndef __LP64__
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
303 /* This function is documented to take an FSSpec as well,
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
304 * which only works in 32-bit mode.
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
305 */
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
306 PyErr_Clear();
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
307 FSSpec fss;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
308 FInfo info;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
309
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
310 if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss))
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
311 return NULL;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
312
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
313 if ((err = FSpGetFInfo(&fss, &info)) != noErr) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
314 return PyErr_Mac(MacOS_Error, err);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
315 }
50445
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
316
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
317 info.fdCreator = ntohl(info.fdCreator);
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
318 info.fdType = ntohl(info.fdType);
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
319
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
320 creator = PyString_FromStringAndSize(
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
321 (char *)&info.fdCreator, 4);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
322 type = PyString_FromStringAndSize((char *)&info.fdType, 4);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
323 res = Py_BuildValue("OO", creator, type);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
324 Py_DECREF(creator);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
325 Py_DECREF(type);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
326 return res;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
327 #else /* __LP64__ */
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
328 return NULL;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
329 #endif /* __LP64__ */
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
330 }
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
331
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
332 err = FSGetCatalogInfo(&ref,
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
333 kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo,
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
334 NULL, NULL, NULL);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
335 if (err != noErr) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
336 PyErr_Mac(MacOS_Error, err);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
337 return NULL;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
338 }
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
339
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
340 if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
341 /* Directory: doesn't have type/creator info.
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
342 *
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
343 * The specific error code is for backward compatibility with
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
344 * earlier versions.
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
345 */
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
346 PyErr_Mac(MacOS_Error, fnfErr);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
347 return NULL;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
348
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
349 }
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
350 finfo = (FileInfo*)&(cataloginfo.finderInfo);
50445
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
351 finfo->fileCreator = ntohl(finfo->fileCreator);
1dcb19216b64 Fix for issue1594
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 48220
diff changeset
352 finfo->fileType = ntohl(finfo->fileType);
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
353 creator = PyString_FromStringAndSize((char*)&(finfo->fileCreator), 4);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
354 type = PyString_FromStringAndSize((char*)&(finfo->fileType), 4);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
355
2227
e53d019e7d47 Got rid of {Get,Set}FileType in favor of {Get,Set}CreatorAndType --
Guido van Rossum <guido@python.org>
parents: 2221
diff changeset
356 res = Py_BuildValue("OO", creator, type);
e53d019e7d47 Got rid of {Get,Set}FileType in favor of {Get,Set}CreatorAndType --
Guido van Rossum <guido@python.org>
parents: 2221
diff changeset
357 Py_DECREF(creator);
2136
c57b5c50a2d2 rename2 changes
Guido van Rossum <guido@python.org>
parents: 2092
diff changeset
358 Py_DECREF(type);
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
359 return res;
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
360 }
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
361
28326
3358dfb1b18b GetCreatorAndType and SetCreatorAndType have been undeprecated. Spotted by
Jack Jansen <jack.jansen@cwi.nl>
parents: 28034
diff changeset
362 static char setcrtp_doc[] = "Set MacOS 4-char creator and type for a file";
5713
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
363
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
364 static PyObject *
2227
e53d019e7d47 Got rid of {Get,Set}FileType in favor of {Get,Set}CreatorAndType --
Guido van Rossum <guido@python.org>
parents: 2221
diff changeset
365 MacOS_SetCreatorAndType(PyObject *self, PyObject *args)
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
366 {
2227
e53d019e7d47 Got rid of {Get,Set}FileType in favor of {Get,Set}CreatorAndType --
Guido van Rossum <guido@python.org>
parents: 2221
diff changeset
367 ResType creator, type;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
368 FSRef ref;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
369 FileInfo* finfo;
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
370 OSErr err;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
371 FSCatalogInfo cataloginfo;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
372
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
373 if (!PyArg_ParseTuple(args, "O&O&O&",
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
374 PyMac_GetFSRef, &ref, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
375 #ifndef __LP64__
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
376 /* Try to handle FSSpec arguments, for backward compatibility */
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
377 FSSpec fss;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
378 FInfo info;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
379
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
380 if (!PyArg_ParseTuple(args, "O&O&O&",
12836
3fe304050434 Made the core toolbox modules carbon-compatible using the new greylist feature of bgen: non-carbon methods are still included in non-carbon MacPython. The issue of backward compatibility of Python code is still open.
Jack Jansen <jack.jansen@cwi.nl>
parents: 11824
diff changeset
381 PyMac_GetFSSpec, &fss, PyMac_GetOSType, &creator, PyMac_GetOSType, &type))
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
382 return NULL;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
383
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
384 if ((err = FSpGetFInfo(&fss, &info)) != noErr)
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
385 return PyErr_Mac(MacOS_Error, err);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
386
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
387 info.fdCreator = creator;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
388 info.fdType = type;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
389
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
390 if ((err = FSpSetFInfo(&fss, &info)) != noErr)
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
391 return PyErr_Mac(MacOS_Error, err);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
392 Py_INCREF(Py_None);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
393 return Py_None;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
394 #else /* __LP64__ */
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
395 return NULL;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
396 #endif /* __LP64__ */
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
397 }
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
398
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
399 err = FSGetCatalogInfo(&ref,
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
400 kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo,
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
401 NULL, NULL, NULL);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
402 if (err != noErr) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
403 PyErr_Mac(MacOS_Error, err);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
404 return NULL;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
405 }
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
406
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
407 if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
408 /* Directory: doesn't have type/creator info.
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
409 *
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
410 * The specific error code is for backward compatibility with
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
411 * earlier versions.
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
412 */
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
413 PyErr_Mac(MacOS_Error, fnfErr);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
414 return NULL;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
415
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
416 }
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
417 finfo = (FileInfo*)&(cataloginfo.finderInfo);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
418 finfo->fileCreator = creator;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
419 finfo->fileType = type;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
420
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
421 err = FSSetCatalogInfo(&ref, kFSCatInfoFinderInfo, &cataloginfo);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
422 if (err != noErr) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
423 PyErr_Mac(MacOS_Error, fnfErr);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
424 return NULL;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
425 }
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
426
2092
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
427 Py_INCREF(Py_None);
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
428 return Py_None;
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
429 }
b03b43bee1ab Used new getargs interface; added {Get,Set}FileInfo.
Guido van Rossum <guido@python.org>
parents: 2091
diff changeset
430
2276
66d6d13df4f8 Added HandleEvent method to macos, so python programs can hand back
Jack Jansen <jack.jansen@cwi.nl>
parents: 2262
diff changeset
431
5713
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
432 static char geterr_doc[] = "Convert OSErr number to string";
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
433
2831
eedd6c1f3ae7 Added GetErrorString method (convert OSErr number to string)
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
434 static PyObject *
eedd6c1f3ae7 Added GetErrorString method (convert OSErr number to string)
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
435 MacOS_GetErrorString(PyObject *self, PyObject *args)
eedd6c1f3ae7 Added GetErrorString method (convert OSErr number to string)
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
436 {
33908
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
437 int err;
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
438 char buf[256];
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
439 Handle h;
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
440 char *str;
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
441 static int errors_loaded;
2831
eedd6c1f3ae7 Added GetErrorString method (convert OSErr number to string)
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
442
33908
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
443 if (!PyArg_ParseTuple(args, "i", &err))
2831
eedd6c1f3ae7 Added GetErrorString method (convert OSErr number to string)
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
444 return NULL;
33908
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
445
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
446 h = GetResource('Estr', err);
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
447 if (!h && !errors_loaded) {
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
448 /*
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
449 ** Attempt to open the resource file containing the
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
450 ** Estr resources. We ignore all errors. We also try
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
451 ** this only once.
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
452 */
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
453 PyObject *m, *rv;
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
454 errors_loaded = 1;
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
455
44439
0cbe94bea2c7 Modified PyImport_Import and PyImport_ImportModule to always use absolute imports by calling __import__ with an explicit level of 0
Christian Heimes <christian@cheimes.de>
parents: 39181
diff changeset
456 m = PyImport_ImportModuleNoBlock("macresource");
33908
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
457 if (!m) {
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
458 if (Py_VerboseFlag)
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
459 PyErr_Print();
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
460 PyErr_Clear();
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
461 }
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
462 else {
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
463 rv = PyObject_CallMethod(m, "open_error_resource", "");
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
464 if (!rv) {
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
465 if (Py_VerboseFlag)
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
466 PyErr_Print();
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
467 PyErr_Clear();
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
468 }
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
469 else {
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
470 Py_DECREF(rv);
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
471 /* And try again... */
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
472 h = GetResource('Estr', err);
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
473 }
39062
d6463e8ef9c4 Add missing Py_DECREF.
Thomas Heller <theller@ctypes.org>
parents: 33908
diff changeset
474 Py_DECREF(m);
33908
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
475 }
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
476 }
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
477 /*
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
478 ** Whether the code above succeeded or not, we won't try
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
479 ** again.
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
480 */
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
481 errors_loaded = 1;
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
482
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
483 if (h) {
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
484 HLock(h);
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
485 str = (char *)*h;
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
486 memcpy(buf, str+1, (unsigned char)str[0]);
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
487 buf[(unsigned char)str[0]] = '\0';
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
488 HUnlock(h);
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
489 ReleaseResource(h);
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
490 }
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
491 else {
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
492 PyOS_snprintf(buf, sizeof(buf), "Mac OS error code %d", err);
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
493 }
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
494
7ed899b61182 SF patch #1035255: Remove CoreServices / CoreFoundation dependencies in core
Raymond Hettinger <python@rcn.com>
parents: 32194
diff changeset
495 return Py_BuildValue("s", buf);
2831
eedd6c1f3ae7 Added GetErrorString method (convert OSErr number to string)
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
496 }
eedd6c1f3ae7 Added GetErrorString method (convert OSErr number to string)
Jack Jansen <jack.jansen@cwi.nl>
parents: 2429
diff changeset
497
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
498
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
499 #ifndef __LP64__
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
500
3567
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
501 static char splash_doc[] = "Open a splash-screen dialog by resource-id (0=close)";
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
502
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
503 static PyObject *
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
504 MacOS_splash(PyObject *self, PyObject *args)
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
505 {
4309
ecbeb445f62e Fixed macos.splash to actually *draw* the splash box:-)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3567
diff changeset
506 int resid = -1;
5488
2e89c55d9a29 Don't free the MacOS_Splash() dialog twice...
Jack Jansen <jack.jansen@cwi.nl>
parents: 5429
diff changeset
507 static DialogPtr curdialog = NULL;
6279
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
508 DialogPtr olddialog;
4328
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
509 WindowRef theWindow;
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
510 CGrafPtr thePort;
12836
3fe304050434 Made the core toolbox modules carbon-compatible using the new greylist feature of bgen: non-carbon methods are still included in non-carbon MacPython. The issue of backward compatibility of Python code is still open.
Jack Jansen <jack.jansen@cwi.nl>
parents: 11824
diff changeset
511 #if 0
4328
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
512 short xpos, ypos, width, height, swidth, sheight;
12836
3fe304050434 Made the core toolbox modules carbon-compatible using the new greylist feature of bgen: non-carbon methods are still included in non-carbon MacPython. The issue of backward compatibility of Python code is still open.
Jack Jansen <jack.jansen@cwi.nl>
parents: 11824
diff changeset
513 #endif
3567
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
514
4309
ecbeb445f62e Fixed macos.splash to actually *draw* the splash box:-)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3567
diff changeset
515 if (!PyArg_ParseTuple(args, "|i", &resid))
3567
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
516 return NULL;
6279
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
517 olddialog = curdialog;
7436
d1465b5c0a08 Fixed double-dispose of splash() dialog
Jack Jansen <jack.jansen@cwi.nl>
parents: 6330
diff changeset
518 curdialog = NULL;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
519
4309
ecbeb445f62e Fixed macos.splash to actually *draw* the splash box:-)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3567
diff changeset
520 if ( resid != -1 ) {
ecbeb445f62e Fixed macos.splash to actually *draw* the splash box:-)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3567
diff changeset
521 curdialog = GetNewDialog(resid, NULL, (WindowPtr)-1);
4328
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
522 if ( curdialog ) {
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
523 theWindow = GetDialogWindow(curdialog);
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
524 thePort = GetWindowPort(theWindow);
12836
3fe304050434 Made the core toolbox modules carbon-compatible using the new greylist feature of bgen: non-carbon methods are still included in non-carbon MacPython. The issue of backward compatibility of Python code is still open.
Jack Jansen <jack.jansen@cwi.nl>
parents: 11824
diff changeset
525 #if 0
4328
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
526 width = thePort->portRect.right - thePort->portRect.left;
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
527 height = thePort->portRect.bottom - thePort->portRect.top;
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
528 swidth = qd.screenBits.bounds.right - qd.screenBits.bounds.left;
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
529 sheight = qd.screenBits.bounds.bottom - qd.screenBits.bounds.top - LMGetMBarHeight();
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
530 xpos = (swidth-width)/2;
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
531 ypos = (sheight-height)/5 + LMGetMBarHeight();
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
532 MoveWindow(theWindow, xpos, ypos, 0);
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
533 ShowWindow(theWindow);
12836
3fe304050434 Made the core toolbox modules carbon-compatible using the new greylist feature of bgen: non-carbon methods are still included in non-carbon MacPython. The issue of backward compatibility of Python code is still open.
Jack Jansen <jack.jansen@cwi.nl>
parents: 11824
diff changeset
534 #endif
4309
ecbeb445f62e Fixed macos.splash to actually *draw* the splash box:-)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3567
diff changeset
535 DrawDialog(curdialog);
4328
b03ab35d52df Added dialog-centering code to splash()
Jack Jansen <jack.jansen@cwi.nl>
parents: 4309
diff changeset
536 }
4309
ecbeb445f62e Fixed macos.splash to actually *draw* the splash box:-)
Jack Jansen <jack.jansen@cwi.nl>
parents: 3567
diff changeset
537 }
6279
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
538 if (olddialog)
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
539 DisposeDialog(olddialog);
3567
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
540 Py_INCREF(Py_None);
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
541 return Py_None;
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
542 }
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
543
4342
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
544 static char DebugStr_doc[] = "Switch to low-level debugger with a message";
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
545
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
546 static PyObject *
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
547 MacOS_DebugStr(PyObject *self, PyObject *args)
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
548 {
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
549 Str255 message;
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
550 PyObject *object = 0;
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
551
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
552 if (!PyArg_ParseTuple(args, "O&|O", PyMac_GetStr255, message, &object))
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
553 return NULL;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
554
4342
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
555 DebugStr(message);
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
556 Py_INCREF(Py_None);
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
557 return Py_None;
897297abe5b4 Added DebugStr method to drop into low-level debugger
Jack Jansen <jack.jansen@cwi.nl>
parents: 4328
diff changeset
558 }
3567
6f715bff17e4 Added splash method (to quickly display splash screen without first
Jack Jansen <jack.jansen@cwi.nl>
parents: 3430
diff changeset
559
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
560
6279
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
561 static char SysBeep_doc[] = "BEEEEEP!!!";
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
562
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
563 static PyObject *
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
564 MacOS_SysBeep(PyObject *self, PyObject *args)
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
565 {
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
566 int duration = 6;
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
567
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
568 if (!PyArg_ParseTuple(args, "|i", &duration))
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
569 return NULL;
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
570 SysBeep(duration);
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
571 Py_INCREF(Py_None);
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
572 return Py_None;
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
573 }
07860049f1c4 Added SysBeep
Jack Jansen <jack.jansen@cwi.nl>
parents: 6212
diff changeset
574
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
575 #endif /* __LP64__ */
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
576
28010
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
577 static char WMAvailable_doc[] =
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
578 "True if this process can interact with the display."
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
579 "Will foreground the application on the first call as a side-effect."
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
580 ;
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
581
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
582 static PyObject *
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
583 MacOS_WMAvailable(PyObject *self, PyObject *args)
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
584 {
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
585 static PyObject *rv = NULL;
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
586
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
587 if (!PyArg_ParseTuple(args, ""))
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
588 return NULL;
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
589 if (!rv) {
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
590 ProcessSerialNumber psn;
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
591
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
592 /*
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
593 ** This is a fairly innocuous call to make if we don't have a window
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
594 ** manager, or if we have no permission to talk to it. It will print
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
595 ** a message on stderr, but at least it won't abort the process.
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
596 ** It appears the function caches the result itself, and it's cheap, so
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
597 ** no need for us to cache.
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
598 */
32194
d3aad377a5a9 CGMainDisplayID() doesn't exist on 10.1, so don't try to call it when
Jack Jansen <jack.jansen@cwi.nl>
parents: 30982
diff changeset
599 #ifdef kCGNullDirectDisplay
d3aad377a5a9 CGMainDisplayID() doesn't exist on 10.1, so don't try to call it when
Jack Jansen <jack.jansen@cwi.nl>
parents: 30982
diff changeset
600 /* On 10.1 CGMainDisplayID() isn't available, and
d3aad377a5a9 CGMainDisplayID() doesn't exist on 10.1, so don't try to call it when
Jack Jansen <jack.jansen@cwi.nl>
parents: 30982
diff changeset
601 ** kCGNullDirectDisplay isn't defined.
d3aad377a5a9 CGMainDisplayID() doesn't exist on 10.1, so don't try to call it when
Jack Jansen <jack.jansen@cwi.nl>
parents: 30982
diff changeset
602 */
28010
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
603 if (CGMainDisplayID() == 0) {
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
604 rv = Py_False;
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
605 } else {
32194
d3aad377a5a9 CGMainDisplayID() doesn't exist on 10.1, so don't try to call it when
Jack Jansen <jack.jansen@cwi.nl>
parents: 30982
diff changeset
606 #else
d3aad377a5a9 CGMainDisplayID() doesn't exist on 10.1, so don't try to call it when
Jack Jansen <jack.jansen@cwi.nl>
parents: 30982
diff changeset
607 {
d3aad377a5a9 CGMainDisplayID() doesn't exist on 10.1, so don't try to call it when
Jack Jansen <jack.jansen@cwi.nl>
parents: 30982
diff changeset
608 #endif
28010
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
609 if (GetCurrentProcess(&psn) < 0 ||
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
610 SetFrontProcess(&psn) < 0) {
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
611 rv = Py_False;
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
612 } else {
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
613 rv = Py_True;
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
614 }
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
615 }
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
616 }
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
617 Py_INCREF(rv);
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
618 return rv;
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
619 }
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
620
6212
5088ec5a12a6 Added GetTicks() here, so profiling can use a decent timer
Jack Jansen <jack.jansen@cwi.nl>
parents: 5746
diff changeset
621 static char GetTicks_doc[] = "Return number of ticks since bootup";
5088ec5a12a6 Added GetTicks() here, so profiling can use a decent timer
Jack Jansen <jack.jansen@cwi.nl>
parents: 5746
diff changeset
622
5088ec5a12a6 Added GetTicks() here, so profiling can use a decent timer
Jack Jansen <jack.jansen@cwi.nl>
parents: 5746
diff changeset
623 static PyObject *
5088ec5a12a6 Added GetTicks() here, so profiling can use a decent timer
Jack Jansen <jack.jansen@cwi.nl>
parents: 5746
diff changeset
624 MacOS_GetTicks(PyObject *self, PyObject *args)
5088ec5a12a6 Added GetTicks() here, so profiling can use a decent timer
Jack Jansen <jack.jansen@cwi.nl>
parents: 5746
diff changeset
625 {
12836
3fe304050434 Made the core toolbox modules carbon-compatible using the new greylist feature of bgen: non-carbon methods are still included in non-carbon MacPython. The issue of backward compatibility of Python code is still open.
Jack Jansen <jack.jansen@cwi.nl>
parents: 11824
diff changeset
626 return Py_BuildValue("i", (int)TickCount());
6212
5088ec5a12a6 Added GetTicks() here, so profiling can use a decent timer
Jack Jansen <jack.jansen@cwi.nl>
parents: 5746
diff changeset
627 }
5088ec5a12a6 Added GetTicks() here, so profiling can use a decent timer
Jack Jansen <jack.jansen@cwi.nl>
parents: 5746
diff changeset
628
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
629 static char openrf_doc[] = "Open resource fork of a file";
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
630
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
631 static PyObject *
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
632 MacOS_openrf(PyObject *self, PyObject *args)
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
633 {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
634 OSErr err;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
635 char *mode = "r";
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
636 FSRef ref;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
637 SInt8 permission = fsRdPerm;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
638 rfobject *fp;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
639 HFSUniStr255 name;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
640
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
641 if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSRef, &ref, &mode))
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
642 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
643 while (*mode) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
644 switch (*mode++) {
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
645 case '*': break;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
646 case 'r': permission = fsRdPerm; break;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
647 case 'w': permission = fsWrPerm; break;
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
648 case 'b': break;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
649 default:
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
650 PyErr_BadArgument();
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
651 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
652 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
653 }
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
654
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
655 err = FSGetResourceForkName(&name);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
656 if (err != noErr) {
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
657 PyMac_Error(err);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
658 return NULL;
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
659 }
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
660
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
661 if ( (fp = newrfobject()) == NULL )
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
662 return NULL;
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
663
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
664
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
665 err = FSOpenFork(&ref, name.length, name.unicode, permission, &fp->fRefNum);
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
666 if (err != noErr) {
3425
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
667 Py_DECREF(fp);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
668 PyMac_Error(err);
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
669 return NULL;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
670 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
671 fp->isclosed = 0;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
672 return (PyObject *)fp;
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
673 }
23254daa247b Added openrf method, which opens resource fork. The resulting object
Jack Jansen <jack.jansen@cwi.nl>
parents: 2831
diff changeset
674
15280
a5ca54969a3f Added PyMac_OutputSeen(), which acknowledges all current output in the stdio window, i.e. it acts like input has been read insofar as the keep-console-open option is interested.
Jack Jansen <jack.jansen@cwi.nl>
parents: 15193
diff changeset
675
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
676
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
677 static PyMethodDef MacOS_Methods[] = {
5713
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
678 {"GetCreatorAndType", MacOS_GetCreatorAndType, 1, getcrtp_doc},
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
679 {"SetCreatorAndType", MacOS_SetCreatorAndType, 1, setcrtp_doc},
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
680 {"GetErrorString", MacOS_GetErrorString, 1, geterr_doc},
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
681 {"openrf", MacOS_openrf, 1, openrf_doc},
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
682 #ifndef __LP64__
5713
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
683 {"splash", MacOS_splash, 1, splash_doc},
ecee55baace3 Removed SetScheduleTimes
Jack Jansen <jack.jansen@cwi.nl>
parents: 5488
diff changeset
684 {"DebugStr", MacOS_DebugStr, 1, DebugStr_doc},
47473
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
685 {"SysBeep", MacOS_SysBeep, 1, SysBeep_doc},
c34e34057714 MacOS X: Enable 4-way universal builds
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 47294
diff changeset
686 #endif /* __LP64__ */
6212
5088ec5a12a6 Added GetTicks() here, so profiling can use a decent timer
Jack Jansen <jack.jansen@cwi.nl>
parents: 5746
diff changeset
687 {"GetTicks", MacOS_GetTicks, 1, GetTicks_doc},
28010
7aa2163889ac Added a method WMAvailable(). This will return True if and only if there
Jack Jansen <jack.jansen@cwi.nl>
parents: 26769
diff changeset
688 {"WMAvailable", MacOS_WMAvailable, 1, WMAvailable_doc},
2184
87f4d6d2e9c8 added high level event interface (requires stdwin patch)
Guido van Rossum <guido@python.org>
parents: 2175
diff changeset
689 {NULL, NULL} /* Sentinel */
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
690 };
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
691
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
692
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
693 void
19066
a1b4f3a1ee07 - Don't return mac-style pathnames in unix-Python.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17865
diff changeset
694 initMacOS(void)
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
695 {
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
696 PyObject *m, *d;
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
697
46967
6df0394abbf1 Add warnings to and deprecated all those Mac modules
Benjamin Peterson <benjamin@python.org>
parents: 44439
diff changeset
698 if (PyErr_WarnPy3k("In 3.x, MacOS is removed.", 1))
6df0394abbf1 Add warnings to and deprecated all those Mac modules
Benjamin Peterson <benjamin@python.org>
parents: 44439
diff changeset
699 return;
6df0394abbf1 Add warnings to and deprecated all those Mac modules
Benjamin Peterson <benjamin@python.org>
parents: 44439
diff changeset
700
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
701 m = Py_InitModule("MacOS", MacOS_Methods);
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
702 d = PyModule_GetDict(m);
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
703
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
704 /* Initialize MacOS.Error exception */
2232
8d5e36b37a41 Got rid of the Resource and Sound interfaces, in favor of the ones
Guido van Rossum <guido@python.org>
parents: 2229
diff changeset
705 MacOS_Error = PyMac_GetOSErrException();
1916
e125f5021e67 config.c: add MacOS module
Guido van Rossum <guido@python.org>
parents: 1896
diff changeset
706 if (MacOS_Error == NULL || PyDict_SetItemString(d, "Error", MacOS_Error) != 0)
14465
e13df4e9076f Got rid of Py_FatalError calls.
Jack Jansen <jack.jansen@cwi.nl>
parents: 13608
diff changeset
707 return;
6330
172c7febd755 Export type objects to Python
Jack Jansen <jack.jansen@cwi.nl>
parents: 6279
diff changeset
708 Rftype.ob_type = &PyType_Type;
172c7febd755 Export type objects to Python
Jack Jansen <jack.jansen@cwi.nl>
parents: 6279
diff changeset
709 Py_INCREF(&Rftype);
172c7febd755 Export type objects to Python
Jack Jansen <jack.jansen@cwi.nl>
parents: 6279
diff changeset
710 if (PyDict_SetItemString(d, "ResourceForkType", (PyObject *)&Rftype) != 0)
14465
e13df4e9076f Got rid of Py_FatalError calls.
Jack Jansen <jack.jansen@cwi.nl>
parents: 13608
diff changeset
711 return;
5258
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
712 /*
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
713 ** This is a hack: the following constant added to the id() of a string
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
714 ** object gives you the address of the data. Unfortunately, it is needed for
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
715 ** some of the image and sound processing interfaces on the mac:-(
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
716 */
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
717 {
47527
52294af4b663 This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents: 47501
diff changeset
718 PyStringObject *p = 0;
5258
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
719 long off = (long)&(p->ob_sval[0]);
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
720
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
721 if( PyDict_SetItemString(d, "string_id_to_buffer", Py_BuildValue("i", off)) != 0)
14465
e13df4e9076f Got rid of Py_FatalError calls.
Jack Jansen <jack.jansen@cwi.nl>
parents: 13608
diff changeset
722 return;
5258
40d2fd472284 Added an attribute string_id_to_buffer, which gives the offset you
Jack Jansen <jack.jansen@cwi.nl>
parents: 5152
diff changeset
723 }
17865
fde5508e82de Ifdeffed a few more sections. All functionality that is relevant on MacOSX
Jack Jansen <jack.jansen@cwi.nl>
parents: 17864
diff changeset
724 #define PY_RUNTIMEMODEL "macho"
16183
a130d5f7e58a Added an attribute runtimemodel, which is either "ppc" or "carbon" and is the runtime model of the current interpreter. Will have to ad another value later for real MacOSX MachO, I guess.
Jack Jansen <jack.jansen@cwi.nl>
parents: 15280
diff changeset
725 if (PyDict_SetItemString(d, "runtimemodel",
a130d5f7e58a Added an attribute runtimemodel, which is either "ppc" or "carbon" and is the runtime model of the current interpreter. Will have to ad another value later for real MacOSX MachO, I guess.
Jack Jansen <jack.jansen@cwi.nl>
parents: 15280
diff changeset
726 Py_BuildValue("s", PY_RUNTIMEMODEL)) != 0)
a130d5f7e58a Added an attribute runtimemodel, which is either "ppc" or "carbon" and is the runtime model of the current interpreter. Will have to ad another value later for real MacOSX MachO, I guess.
Jack Jansen <jack.jansen@cwi.nl>
parents: 15280
diff changeset
727 return;
30975
4ce30d9a1e04 Getting rid of code conditional on TARGET_API_MAC_*.
Jack Jansen <jack.jansen@cwi.nl>
parents: 30970
diff changeset
728 #if defined(WITH_NEXT_FRAMEWORK)
28034
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
729 #define PY_LINKMODEL "framework"
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
730 #elif defined(Py_ENABLE_SHARED)
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
731 #define PY_LINKMODEL "shared"
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
732 #else
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
733 #define PY_LINKMODEL "static"
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
734 #endif
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
735 if (PyDict_SetItemString(d, "linkmodel",
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
736 Py_BuildValue("s", PY_LINKMODEL)) != 0)
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
737 return;
91624a47537c Added a linkmodel attribute, showing how Python was built. This is so
Jack Jansen <jack.jansen@cwi.nl>
parents: 28010
diff changeset
738
1892
eec0dc5aba60 gestaltmodule.c: interface to Gestalt Manager.
Guido van Rossum <guido@python.org>
parents:
diff changeset
739 }