diff --git a/Mac/Include/macglue.h b/Mac/Include/macglue.h
index e5c4014..e2ec8cd 100644
--- a/Mac/Include/macglue.h
+++ b/Mac/Include/macglue.h
@@ -1,12 +1,41 @@
-#include <Files.h>
+/***********************************************************
+Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
 #include <Types.h>
-#include <Resources.h>
+#include <Files.h>
 
 char *macstrerror Py_PROTO((int));			/* strerror with mac errors */
+
 PyObject *PyErr_Mac Py_PROTO((PyObject *, int));	/* Exception with a mac error */
+
 int PyMac_Idle Py_PROTO((void));			/* Idle routine */
-int PyMac_GetOSType Py_PROTO((PyObject *, ResType *));	/* argument parser for OSType */
+
+int PyMac_GetOSType Py_PROTO((PyObject *, OSType *));	/* argument parser for OSType */
+PyObject *PyMac_BuildOSType Py_PROTO((OSType));		/* Convert OSType to PyObject */
+
 int PyMac_GetStr255 Py_PROTO((PyObject *, Str255));	/* argument parser for Str255 */
+PyObject *PyMac_BuildStr255 Py_PROTO((Str255));		/* Convert Str255 to PyObject */
+
 int PyMac_GetFSSpec Py_PROTO((PyObject *, FSSpec *));	/* argument parser for FSSpec */
 PyObject *PyMac_BuildFSSpec Py_PROTO((FSSpec *));	/* Convert FSSpec to PyObject */
-PyObject *PyMac_BuildOSType Py_PROTO((OSType));		/* Convert OSType to PyObject */
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c
index 7767515..f350f97 100644
--- a/Mac/Python/macglue.c
+++ b/Mac/Python/macglue.c
@@ -1,13 +1,26 @@
-/*
-** macglue - A couple of mac-specific routines often needed.
-**
-** Jack Jansen, CWI, 1994.
-** Some routines by Guido, moved here from macosmodule.c
-** (since they are useable by other modules as well).
-*/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
+/***********************************************************
+Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
 
 #include "Python.h"
 #include "macglue.h"
@@ -19,7 +32,7 @@
 #include <Windows.h>
 #include <Desk.h>
 
-/* We should include Errors.h here, but it has a name conflict
+/* XXX We should include Errors.h here, but it has a name conflict
 ** with the python errors.h. */
 #define fnfErr -43
 
@@ -117,7 +130,7 @@
 	return 1;
 }
 
-/* Convert a Str255 argument */
+/* Convert a Python string to a Str255 */
 int
 PyMac_GetStr255(PyObject *v, Str255 pbuf)
 {
@@ -167,9 +180,7 @@
 	return 1;
 }
 
-/*
-** Return a python object that describes an FSSpec
-*/
+/* Return a Python object that describes an FSSpec */
 PyObject *
 PyMac_BuildFSSpec(FSSpec *fs)
 {
@@ -182,3 +193,10 @@
 {
 	return PyString_FromStringAndSize((char *)&t, 4);
 }
+
+/* Convert a Str255 to a Python string */
+PyObject *
+PyMac_BuildStr255(Str255 s)
+{
+	return PyString_FromStringAndSize((char *)&s[1], (int)s[0]);
+}
