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/Mac/Modules/macfsmodule.c b/Mac/Modules/macfsmodule.c
index 2c20e89..15d9f30 100644
--- a/Mac/Modules/macfsmodule.c
+++ b/Mac/Modules/macfsmodule.c
@@ -51,6 +51,12 @@
#endif
static PyObject *ErrorObject;
+#ifdef TARGET_API_MAC_OSX
+#define PATHNAMELEN 1024
+#else
+#define PATHNAMELEN 256
+#endif
+
/* ----------------------------------------------------- */
/* Declarations for objects of type Alias */
@@ -449,22 +455,17 @@
static PyObject *
mfss_as_pathname(mfssobject *self, PyObject *args)
{
-#if TARGET_API_MAC_OSX
- PyErr_SetString(PyExc_NotImplementedError, "FSSpec.as_pathname not supported on this platform");
- return 0;
-#else
- char strbuf[257];
+ char strbuf[PATHNAMELEN];
OSErr err;
if (!PyArg_ParseTuple(args, ""))
return NULL;
- err = PyMac_GetFullPath(&self->fsspec, strbuf);
+ err = PyMac_GetFullPathname(&self->fsspec, strbuf, PATHNAMELEN);
if ( err ) {
PyErr_Mac(ErrorObject, err);
return NULL;
}
return PyString_FromString(strbuf);
-#endif
}
static PyObject *
diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c
index 0b8d856..6b8b87d 100644
--- a/Mac/Modules/macosmodule.c
+++ b/Mac/Modules/macosmodule.c
@@ -40,6 +40,12 @@
static PyObject *MacOS_Error; /* Exception MacOS.Error */
+#ifdef TARGET_API_MAC_OSX
+#define PATHNAMELEN 1024
+#else
+#define PATHNAMELEN 256
+#endif
+
#ifdef MPW
#define bufferIsSmall -607 /*error returns from Post and Accept */
#endif
@@ -596,15 +602,14 @@
err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum);
-#if !TARGET_API_MAC_OSX
if ( err == fnfErr ) {
/* In stead of doing complicated things here to get creator/type
** correct we let the standard i/o library handle it
*/
FILE *tfp;
- char pathname[257];
+ char pathname[PATHNAMELEN];
- if ( err=PyMac_GetFullPath(&fss, pathname) ) {
+ if ( err=PyMac_GetFullPathname(&fss, pathname, PATHNAMELEN) ) {
PyMac_Error(err);
Py_DECREF(fp);
return NULL;
@@ -618,7 +623,6 @@
fclose(tfp);
err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum);
}
-#endif
if ( err ) {
Py_DECREF(fp);
PyMac_Error(err);