@@ -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 */
104106int
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 */
117119int
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*/
138140int
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