diff options
Diffstat (limited to 'Mac/Modules/file/filesupport.py')
-rw-r--r-- | Mac/Modules/file/filesupport.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/Mac/Modules/file/filesupport.py b/Mac/Modules/file/filesupport.py index b7df7eb..26821dd 100644 --- a/Mac/Modules/file/filesupport.py +++ b/Mac/Modules/file/filesupport.py @@ -271,6 +271,7 @@ int PyMac_GetFSRef(PyObject *v, FSRef *fsr) { OSStatus err; + FSSpec fss; if (FSRef_Check(v)) { *fsr = ((FSRefObject *)v)->ob_itself; @@ -289,8 +290,13 @@ PyMac_GetFSRef(PyObject *v, FSRef *fsr) /* XXXX Should try unicode here too */ #endif /* Otherwise we try to go via an FSSpec */ +#if TARGET_API_MAC_OSX if (FSSpec_Check(v)) { - if ((err=FSpMakeFSRef(&((FSSpecObject *)v)->ob_itself, fsr)) == 0) + fss = ((FSSpecObject *)v)->ob_itself; +#else + if (PyMac_GetFSSpec(v, &fss)) { +#endif + if ((err=FSpMakeFSRef(&fss, fsr)) == 0) return 1; PyMac_Error(err); return 0; @@ -808,7 +814,26 @@ f.docstring = lambda: "() -> string" fsref_methods.append(f) FSRef_as_pathname_body = """ +#if TARGET_API_MAC_OSX +if (!PyArg_ParseTuple(_args, "")) + return NULL; _res = FSRef_FSRefMakePath(_self, _args); +#else +char strbuf[1024]; +OSErr err; +FSSpec fss; + +if (!PyArg_ParseTuple(_args, "")) + return NULL; +if ( !PyMac_GetFSSpec((PyObject *)_self, &fss)) + return NULL; +err = PyMac_GetFullPathname(&fss, strbuf, sizeof(strbuf)); +if ( err ) { + PyMac_Error(err); + return NULL; +} +_res = PyString_FromString(strbuf); +#endif return _res; """ f = ManualGenerator("as_pathname", FSRef_as_pathname_body) |