Kaydet (Commit) a5bca579 authored tarafından Jack Jansen's avatar Jack Jansen

PyMac_GetFSSpec must be called via the dylib glue code on OSX.

üst 3988358b
...@@ -42,6 +42,9 @@ ...@@ -42,6 +42,9 @@
#define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn) #define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn)
#endif /* USE_TOOLBOX_OBJECT_GLUE */ #endif /* USE_TOOLBOX_OBJECT_GLUE */
/* macfs exports */
extern int PyMac_GetFSSpec(PyObject *, FSSpec *);
/* AE exports */ /* AE exports */
extern PyObject *AEDesc_New(AppleEvent *); /* XXXX Why passed by address?? */ extern PyObject *AEDesc_New(AppleEvent *); /* XXXX Why passed by address?? */
extern int AEDesc_Convert(PyObject *, AppleEvent *); extern int AEDesc_Convert(PyObject *, AppleEvent *);
......
...@@ -24,6 +24,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -24,6 +24,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "Python.h" #include "Python.h"
#include "macglue.h" #include "macglue.h"
#include "pymactoolbox.h"
#ifdef WITHOUT_FRAMEWORKS #ifdef WITHOUT_FRAMEWORKS
#include <Memory.h> #include <Memory.h>
...@@ -38,7 +39,10 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -38,7 +39,10 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "getapplbycreator.h" #include "getapplbycreator.h"
#ifdef USE_TOOLBOX_OBJECT_GLUE
extern int _PyMac_GetFSSpec(PyObject *, FSSpec *);
#define PyMac_GetFSSpec _PyMac_GetFSSpec
#endif
static PyObject *ErrorObject; static PyObject *ErrorObject;
/* ----------------------------------------------------- */ /* ----------------------------------------------------- */
...@@ -1201,8 +1205,17 @@ PyMac_GetFSRef(PyObject *v, FSRef *fsr) ...@@ -1201,8 +1205,17 @@ PyMac_GetFSRef(PyObject *v, FSRef *fsr)
if ( _mfs_GetFSRefFromFSSpec(v, fsr) ) if ( _mfs_GetFSRefFromFSSpec(v, fsr) )
return 1; return 1;
if ( PyString_Check(v) ) { if ( PyString_Check(v) ) {
#if TARGET_API_MAC_OSX
OSStatus err;
if ( (err=FSPathMakeRef(PyString_AsString(v), fsr, NULL)) ) {
PyErr_Mac(ErrorObject, err);
return 0;
}
return 1;
#else
PyErr_SetString(PyExc_NotImplementedError, "Cannot create an FSRef from a pathname on this platform"); PyErr_SetString(PyExc_NotImplementedError, "Cannot create an FSRef from a pathname on this platform");
return 0; return 0;
#endif
} }
PyErr_SetString(PyExc_TypeError, "FSRef argument should be existing FSRef, FSSpec or (OSX only) pathname"); PyErr_SetString(PyExc_TypeError, "FSRef argument should be existing FSRef, FSSpec or (OSX only) pathname");
return 0; return 0;
...@@ -1270,6 +1283,8 @@ initmacfs() ...@@ -1270,6 +1283,8 @@ initmacfs()
{ {
PyObject *m, *d; PyObject *m, *d;
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, PyMac_GetFSSpec);
/* Create the module and add the functions */ /* Create the module and add the functions */
m = Py_InitModule("macfs", mfs_methods); m = Py_InitModule("macfs", mfs_methods);
......
...@@ -1194,6 +1194,7 @@ int routinename(PyObject *pyobj, object *cobj) { \ ...@@ -1194,6 +1194,7 @@ int routinename(PyObject *pyobj, object *cobj) { \
} \ } \
return (*PyMacGluePtr_##routinename)(pyobj, cobj); \ return (*PyMacGluePtr_##routinename)(pyobj, cobj); \
} }
GLUE_CONVERT(FSSpec, PyMac_GetFSSpec, "macfs")
GLUE_NEW(AppleEvent *, AEDesc_New, "AE") /* XXXX Why by address? */ GLUE_NEW(AppleEvent *, AEDesc_New, "AE") /* XXXX Why by address? */
GLUE_CONVERT(AppleEvent, AEDesc_Convert, "AE") GLUE_CONVERT(AppleEvent, AEDesc_Convert, "AE")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment