Replaced PyMac_FullPath by PyMac_FullPathname, which has an extra 'length'
parameter for the return string (as unix pathnames are not limited
by the 255 char pstring limit).
Implemented the function for MachO-Python, where it returns unix pathnames.
diff --git a/Python/mactoolboxglue.c b/Python/mactoolboxglue.c
index 0781a3b..52ff00b 100644
--- a/Python/mactoolboxglue.c
+++ b/Python/mactoolboxglue.c
@@ -93,7 +93,7 @@
 
 /* Initialize and return PyMac_OSErrException */
 PyObject *
-PyMac_GetOSErrException()
+PyMac_GetOSErrException(void)
 {
 	if (PyMac_OSErrException == NULL)
 		PyMac_OSErrException = PyString_FromString("MacOS.Error");
@@ -127,6 +127,46 @@
 	return PyErr_Mac(PyMac_GetOSErrException(), err);
 }
 
+
+#if TARGET_API_MAC_OSX
+OSErr
+PyMac_GetFullPathname(FSSpec *fss, char *path, int len)
+{
+	FSRef fsr;
+	OSErr err;
+	
+	*path = '\0';
+	err = FSpMakeFSRef(fss, &fsr);
+	if ( err == fnfErr ) {
+		/* FSSpecs can point to non-existing files, fsrefs can't. */
+		FSSpec fss2;
+		int tocopy;
+		
+		err = FSMakeFSSpec(fss->vRefNum, fss->parID, "", &fss2);
+		if ( err ) return err;
+		err = FSpMakeFSRef(&fss2, &fsr);
+		if ( err ) return err;
+		err = (OSErr)FSRefMakePath(&fsr, path, len-1);
+		if ( err ) return err;
+		/* This part is not 100% safe: we append the filename part, but
+		** I'm not sure that we don't run afoul of the various 8bit
+		** encodings here. Will have to look this up at some point...
+		*/
+		strcat(path, "/");
+		tocopy = fss->name[0];
+		if ( strlen(path) + tocopy >= len )
+			tocopy = len - strlen(path) - 1;
+		if ( tocopy > 0 )
+			strncat(path, fss->name+1, tocopy);
+	} else {
+		if ( err ) return err;
+		err = (OSErr)FSRefMakePath(&fsr, path, len);
+		if ( err ) return err;
+	}
+	return 0;
+}
+
+#endif /* TARGET_API_MAC_OSX */
 /* Convert a 4-char string object argument to an OSType value */
 int
 PyMac_GetOSType(PyObject *v, OSType *pr)