]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
backport of 1.52 and 1.53:
authorJack Jansen <jack.jansen@cwi.nl>
Sun, 24 Feb 2002 22:55:34 +0000 (22:55 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Sun, 24 Feb 2002 22:55:34 +0000 (22:55 +0000)
- Added as_pathname() method to FSRef objects.
- In MachoPython expect Unix-style pathnames for both FSSpec and FSRef
initializers.

Mac/Modules/macfsmodule.c

index 6dba5782562f2e551512c416f6eb404bd682a7e7..b00f5dd1959c29923fd9075e712cdab6e28e25dc 100644 (file)
@@ -773,10 +773,26 @@ mfsr_as_fsspec(mfsrobject *self, PyObject *args)
        return (PyObject *)newmfssobject(&fss);
 }
 
+static PyObject *
+mfsr_as_pathname(mfsrobject *self, PyObject *args)
+{
+       char strbuf[PATHNAMELEN];
+       OSStatus err;
+       
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+       err = FSRefMakePath(&self->fsref, strbuf, PATHNAMELEN);
+       if ( err ) {
+               PyErr_Mac(ErrorObject, err);
+               return NULL;
+       }
+       return PyString_FromString(strbuf);
+}
+
 static struct PyMethodDef mfsr_methods[] = {
        {"as_fsspec",           (PyCFunction)mfsr_as_fsspec,    1},
+       {"as_pathname",         (PyCFunction)mfsr_as_pathname,                  1},
 #if 0
-       {"as_pathname",         (PyCFunction)mfss_as_pathname,                  1},
        {"as_tuple",            (PyCFunction)mfss_as_tuple,                             1},
        {"NewAlias",            (PyCFunction)mfss_NewAlias,                             1},
        {"NewAliasMinimal",     (PyCFunction)mfss_NewAliasMinimal,              1},
@@ -1189,11 +1205,21 @@ PyMac_GetFSSpec(PyObject *v, FSSpec *fs)
        if (_mfs_GetFSSpecFromFSRef(v, fs))
                return 1;
        if ( PyString_Check(v) ) {
+#if TARGET_API_MAC_OSX
+               FSRef fsr;
+               
+               if ( !PyMac_GetFSRef(v, &fsr) )
+                       return 0;
+               if ( FSGetCatalogInfo(&fsr, kFSCatInfoNone, NULL, NULL, fs, NULL) == noErr )
+                       return 1;
+               return 0;
+#else
                /* It's a pathname */
                if( !PyArg_Parse(v, "O&", PyMac_GetStr255, &path) )
                        return 0;
                refnum = 0; /* XXXX Should get CurWD here?? */
                parid = 0;
+#endif
        } else {
                if( !PyArg_Parse(v, "(hlO&); FSSpec should be FSSpec, FSRef, fullpath or (vrefnum,dirid,path)",
                                                        &refnum, &parid, PyMac_GetStr255, &path)) {