Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8f69179

Browse files
committed
modernized/rationalized, added PyMac_BuildOSType
1 parent 8d6c180 commit 8f69179

2 files changed

Lines changed: 24 additions & 11 deletions

File tree

Mac/Include/macglue.h

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22
#include <Types.h>
33
#include <Resources.h>
44

5-
char *macstrerror PROTO((int)); /* strerror with mac errors */
6-
object *PyErr_Mac PROTO((object *, int)); /* Exception with a mac error */
7-
int PyMac_Idle PROTO((void)); /* Idle routine */
8-
int GetOSType PROTO((object *, ResType *)); /* argument parser for OSType */
9-
int GetStr255 PROTO((object *, Str255)); /* argument parser for Str255 */
10-
int GetFSSpec PROTO((object *, FSSpec *)); /* argument parser for FSSpec */
11-
object *PyMac_BuildFSSpec PROTO((FSSpec *)); /* Convert FSSpec to python object */
5+
char *macstrerror Py_PROTO((int)); /* strerror with mac errors */
6+
PyObject *PyErr_Mac Py_PROTO((PyObject *, int)); /* Exception with a mac error */
7+
int PyMac_Idle Py_PROTO((void)); /* Idle routine */
8+
int PyMac_GetOSType Py_PROTO((PyObject *, ResType *)); /* argument parser for OSType */
9+
int PyMac_GetStr255 Py_PROTO((PyObject *, Str255)); /* argument parser for Str255 */
10+
int PyMac_GetFSSpec Py_PROTO((PyObject *, FSSpec *)); /* argument parser for FSSpec */
11+
PyObject *PyMac_BuildFSSpec Py_PROTO((FSSpec *)); /* Convert FSSpec to PyObject */
12+
PyObject *PyMac_BuildOSType Py_PROTO((OSType)); /* Convert OSType to PyObject */
1213

14+
#define GetOSType PyMac_GetOSType
15+
#define GetStr255 PyMac_GetStr255
16+
#define GetFSSpec PyMac_GetFSSpec

Mac/Python/macglue.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,12 @@ PyErr_Mac(PyObject *eobj, int err)
6363
char *msg;
6464
PyObject *v;
6565

66-
if (err == 0) {
66+
if (err == 0 && !PyErr_Occurred()) {
6767
Py_INCREF(Py_None);
6868
return Py_None;
6969
}
70+
if (err == -1 && PyErr_Occurred())
71+
return NULL;
7072
msg = macstrerror(err);
7173
v = Py_BuildValue("(is)", err, msg);
7274
PyErr_SetObject(eobj, v);
@@ -102,7 +104,7 @@ PyMac_Idle()
102104

103105
/* Convert a ResType argument */
104106
int
105-
GetOSType(PyObject *v, ResType *pr)
107+
PyMac_GetOSType(PyObject *v, ResType *pr)
106108
{
107109
if (!PyString_Check(v) || PyString_Size(v) != 4) {
108110
PyErr_SetString(PyExc_TypeError,
@@ -115,7 +117,7 @@ GetOSType(PyObject *v, ResType *pr)
115117

116118
/* Convert a Str255 argument */
117119
int
118-
GetStr255(PyObject *v, Str255 pbuf)
120+
PyMac_GetStr255(PyObject *v, Str255 pbuf)
119121
{
120122
int len;
121123
if (!PyString_Check(v) || (len = PyString_Size(v)) > 255) {
@@ -136,7 +138,7 @@ GetStr255(PyObject *v, Str255 pbuf)
136138
** this is probably sys7 dependent anyway).
137139
*/
138140
int
139-
GetFSSpec(PyObject *v, FSSpec *fs)
141+
PyMac_GetFSSpec(PyObject *v, FSSpec *fs)
140142
{
141143
Str255 path;
142144
short refnum;
@@ -172,3 +174,10 @@ PyMac_BuildFSSpec(FSSpec *fs)
172174
{
173175
return Py_BuildValue("(iis#)", fs->vRefNum, fs->parID, &fs->name[1], fs->name[0]);
174176
}
177+
178+
/* Convert an OSType value to a 4-char string object */
179+
PyObject *
180+
PyMac_BuildOSType(OSType t)
181+
{
182+
return PyString_FromStringAndSize((char *)&t, 4);
183+
}

0 commit comments

Comments
 (0)