mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
PyMac_GetFSSpec must be called via the dylib glue code on OSX.
This commit is contained in:
parent
3988358b4d
commit
a5bca579fd
3 changed files with 20 additions and 1 deletions
|
@ -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.
|
||||||
|
|
||||||
#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.
|
||||||
|
|
||||||
#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)
|
||||||
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()
|
||||||
{
|
{
|
||||||
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) { \
|
||||||
} \
|
} \
|
||||||
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")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue