diff options
| author | su_v <suv-sf@users.sourceforge.net> | 2014-09-16 16:22:35 +0000 |
|---|---|---|
| committer | ~suv <suv-sf@users.sourceforge.net> | 2014-09-16 16:22:35 +0000 |
| commit | 67be86628796a35cdef5b5b543b5e4661f7a416c (patch) | |
| tree | fcef3a8452bc72f27ffbae35d5b6d824e93c477a /packaging/macosx/ports/lang/python25/files/patch-64bit.diff | |
| parent | update to trunk (r13556) (diff) | |
| download | inkscape-67be86628796a35cdef5b5b543b5e4661f7a416c.tar.gz inkscape-67be86628796a35cdef5b5b543b5e4661f7a416c.zip | |
ports: maintain current ports for python25 and py25-* modules for packaging locally (support will likely be removed in upstream MacPorts)
(bzr r13506.1.98)
Diffstat (limited to 'packaging/macosx/ports/lang/python25/files/patch-64bit.diff')
| -rw-r--r-- | packaging/macosx/ports/lang/python25/files/patch-64bit.diff | 1234 |
1 files changed, 1234 insertions, 0 deletions
diff --git a/packaging/macosx/ports/lang/python25/files/patch-64bit.diff b/packaging/macosx/ports/lang/python25/files/patch-64bit.diff new file mode 100644 index 000000000..100617df6 --- /dev/null +++ b/packaging/macosx/ports/lang/python25/files/patch-64bit.diff @@ -0,0 +1,1234 @@ +--- Include/pymactoolbox.h.orig 2004-11-05 18:02:59.000000000 +1100 ++++ Include/pymactoolbox.h 2009-09-10 18:08:58.000000000 +1000 +@@ -8,7 +8,9 @@ + #endif + + #include <Carbon/Carbon.h> ++#ifndef __LP64__ + #include <QuickTime/QuickTime.h> ++#endif /* !__LP64__ */ + + /* + ** Helper routines for error codes and such. +@@ -18,8 +20,10 @@ + PyObject *PyMac_GetOSErrException(void); /* Initialize & return it */ + PyObject *PyErr_Mac(PyObject *, int); /* Exception with a mac error */ + PyObject *PyMac_Error(OSErr); /* Uses PyMac_GetOSErrException */ ++#ifndef __LP64__ + extern OSErr PyMac_GetFullPathname(FSSpec *, char *, int); /* convert + fsspec->path */ ++#endif /* !__LP64__ */ + /* + ** These conversion routines are defined in mactoolboxglue.c itself. + */ +@@ -83,9 +87,10 @@ + #endif /* USE_TOOLBOX_OBJECT_GLUE */ + + /* macfs exports */ ++#ifndef __LP64__ + int PyMac_GetFSSpec(PyObject *, FSSpec *); /* argument parser for FSSpec */ + PyObject *PyMac_BuildFSSpec(FSSpec *); /* Convert FSSpec to PyObject */ +- ++#endif /* !__LP64__ */ + int PyMac_GetFSRef(PyObject *, FSRef *); /* argument parser for FSRef */ + PyObject *PyMac_BuildFSRef(FSRef *); /* Convert FSRef to PyObject */ + +@@ -101,39 +106,54 @@ + extern int CmpInstObj_Convert(PyObject *, ComponentInstance *); + + /* Ctl exports */ ++#ifndef __LP64__ + extern PyObject *CtlObj_New(ControlHandle); + extern int CtlObj_Convert(PyObject *, ControlHandle *); ++#endif /* !__LP64__ */ + + /* Dlg exports */ ++#ifndef __LP64__ + extern PyObject *DlgObj_New(DialogPtr); + extern int DlgObj_Convert(PyObject *, DialogPtr *); + extern PyObject *DlgObj_WhichDialog(DialogPtr); ++#endif /* !__LP64__ */ + + /* Drag exports */ ++#ifndef __LP64__ + extern PyObject *DragObj_New(DragReference); + extern int DragObj_Convert(PyObject *, DragReference *); ++#endif /* !__LP64__ */ + + /* List exports */ ++#ifndef __LP64__ + extern PyObject *ListObj_New(ListHandle); + extern int ListObj_Convert(PyObject *, ListHandle *); ++#endif /* !__LP64__ */ + + /* Menu exports */ ++#ifndef __LP64__ + extern PyObject *MenuObj_New(MenuHandle); + extern int MenuObj_Convert(PyObject *, MenuHandle *); ++#endif /* !__LP64__ */ + + /* Qd exports */ ++#ifndef __LP64__ + extern PyObject *GrafObj_New(GrafPtr); + extern int GrafObj_Convert(PyObject *, GrafPtr *); + extern PyObject *BMObj_New(BitMapPtr); + extern int BMObj_Convert(PyObject *, BitMapPtr *); + extern PyObject *QdRGB_New(RGBColor *); + extern int QdRGB_Convert(PyObject *, RGBColor *); ++#endif /* !__LP64__ */ + + /* Qdoffs exports */ ++#ifndef __LP64__ + extern PyObject *GWorldObj_New(GWorldPtr); + extern int GWorldObj_Convert(PyObject *, GWorldPtr *); ++#endif /* !__LP64__ */ + + /* Qt exports */ ++#ifndef __LP64__ + extern PyObject *TrackObj_New(Track); + extern int TrackObj_Convert(PyObject *, Track *); + extern PyObject *MovieObj_New(Movie); +@@ -146,6 +166,7 @@ + extern int UserDataObj_Convert(PyObject *, UserData *); + extern PyObject *MediaObj_New(Media); + extern int MediaObj_Convert(PyObject *, Media *); ++#endif /* !__LP64__ */ + + /* Res exports */ + extern PyObject *ResObj_New(Handle); +@@ -154,13 +175,17 @@ + extern int OptResObj_Convert(PyObject *, Handle *); + + /* TE exports */ ++#ifndef __LP64__ + extern PyObject *TEObj_New(TEHandle); + extern int TEObj_Convert(PyObject *, TEHandle *); ++#endif /* !__LP64__ */ + + /* Win exports */ ++#ifndef __LP64__ + extern PyObject *WinObj_New(WindowPtr); + extern int WinObj_Convert(PyObject *, WindowPtr *); + extern PyObject *WinObj_WhichWindow(WindowPtr); ++#endif /* !__LP64__ */ + + /* CF exports */ + extern PyObject *CFObj_New(CFTypeRef); +--- Python/mactoolboxglue.c.orig 2006-07-12 02:44:25.000000000 +1000 ++++ Python/mactoolboxglue.c 2009-09-10 19:26:39.000000000 +1000 +@@ -105,7 +105,7 @@ + return PyErr_Mac(PyMac_GetOSErrException(), err); + } + +- ++#ifndef __LP64__ + OSErr + PyMac_GetFullPathname(FSSpec *fss, char *path, int len) + { +@@ -153,6 +153,7 @@ + Py_XDECREF(fs); + return err; + } ++#endif /* !__LP64__ */ + + /* Convert a 4-char string object argument to an OSType value */ + int +@@ -417,6 +418,7 @@ + GLUE_NEW(GWorldPtr, GWorldObj_New, "Carbon.Qdoffs") + GLUE_CONVERT(GWorldPtr, GWorldObj_Convert, "Carbon.Qdoffs") + ++#ifndef __LP64__ + GLUE_NEW(Track, TrackObj_New, "Carbon.Qt") + GLUE_CONVERT(Track, TrackObj_Convert, "Carbon.Qt") + GLUE_NEW(Movie, MovieObj_New, "Carbon.Qt") +@@ -429,6 +431,7 @@ + GLUE_CONVERT(UserData, UserDataObj_Convert, "Carbon.Qt") + GLUE_NEW(Media, MediaObj_New, "Carbon.Qt") + GLUE_CONVERT(Media, MediaObj_Convert, "Carbon.Qt") ++#endif /* !__LP64__ */ + + GLUE_NEW(Handle, ResObj_New, "Carbon.Res") + GLUE_CONVERT(Handle, ResObj_Convert, "Carbon.Res") +--- Modules/_ctypes/libffi/src/darwin/ffitarget.h.orig 2006-05-26 07:58:05.000000000 +1000 ++++ Modules/_ctypes/libffi/src/darwin/ffitarget.h 2009-09-10 20:15:39.000000000 +1000 +@@ -4,7 +4,7 @@ + * created by configure). This makes is possible to build a univeral binary + * of ctypes in one go. + */ +-#if defined(__i386__) ++#if defined(__i386__) || defined(__x86_64__) + + #ifndef X86_DARWIN + #define X86_DARWIN +@@ -13,7 +13,7 @@ + + #include "../src/x86/ffitarget.h" + +-#elif defined(__ppc__) ++#elif defined(__ppc__) || defined(__ppc64__) + + #ifndef POWERPC_DARWIN + #define POWERPC_DARWIN +--- Mac/Modules/res/_Resmodule.c.orig 2005-07-04 06:59:44.000000000 +1000 ++++ Mac/Modules/res/_Resmodule.c 2009-09-10 20:44:43.000000000 +1000 +@@ -414,6 +414,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *ResObj_as_Control(ResourceObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -431,6 +432,7 @@ + return _res; + + } ++#endif /* !__LP64__ */ + + static PyObject *ResObj_LoadResource(ResourceObject *_self, PyObject *_args) + { +@@ -501,10 +503,12 @@ + PyDoc_STR("(long newSize) -> None")}, + {"GetNextFOND", (PyCFunction)ResObj_GetNextFOND, 1, + PyDoc_STR("() -> (Handle _rv)")}, ++#ifndef __LP64__ + {"as_Control", (PyCFunction)ResObj_as_Control, 1, + PyDoc_STR("Return this resource/handle as a Control")}, + {"as_Menu", (PyCFunction)ResObj_as_Menu, 1, + PyDoc_STR("Return this resource/handle as a Menu")}, ++#endif /* !__LP64__ */ + {"LoadResource", (PyCFunction)ResObj_LoadResource, 1, + PyDoc_STR("() -> None")}, + {"AutoDispose", (PyCFunction)ResObj_AutoDispose, 1, +@@ -1152,6 +1156,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *Res_OpenRFPerm(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -1287,6 +1292,7 @@ + _res = Py_None; + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *Res_InsertResourceFile(PyObject *_self, PyObject *_args) + { +@@ -1327,6 +1333,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *Res_FSpResourceFileAlreadyOpen(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -1413,6 +1420,7 @@ + nextRefNum); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *Res_FSOpenResFile(PyObject *_self, PyObject *_args) + { +@@ -1438,6 +1446,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *Res_FSCreateResFile(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -1534,6 +1543,7 @@ + PyMac_BuildFSSpec, &newSpec); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *Res_FSOpenResourceFile(PyObject *_self, PyObject *_args) + { +@@ -1637,6 +1647,7 @@ + PyDoc_STR("(short refNum) -> (short _rv)")}, + {"SetResFileAttrs", (PyCFunction)Res_SetResFileAttrs, 1, + PyDoc_STR("(short refNum, short attrs) -> None")}, ++#ifndef __LP64__ + {"OpenRFPerm", (PyCFunction)Res_OpenRFPerm, 1, + PyDoc_STR("(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)")}, + {"HOpenResFile", (PyCFunction)Res_HOpenResFile, 1, +@@ -1647,10 +1658,12 @@ + PyDoc_STR("(FSSpec spec, SignedByte permission) -> (short _rv)")}, + {"FSpCreateResFile", (PyCFunction)Res_FSpCreateResFile, 1, + PyDoc_STR("(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None")}, ++#endif /* !__LP64__ */ + {"InsertResourceFile", (PyCFunction)Res_InsertResourceFile, 1, + PyDoc_STR("(SInt16 refNum, RsrcChainLocation where) -> None")}, + {"DetachResourceFile", (PyCFunction)Res_DetachResourceFile, 1, + PyDoc_STR("(SInt16 refNum) -> None")}, ++#ifndef __LP64__ + {"FSpResourceFileAlreadyOpen", (PyCFunction)Res_FSpResourceFileAlreadyOpen, 1, + PyDoc_STR("(FSSpec resourceFile) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")}, + {"FSpOpenOrphanResFile", (PyCFunction)Res_FSpOpenOrphanResFile, 1, +@@ -1659,14 +1672,17 @@ + PyDoc_STR("() -> (SInt16 refNum)")}, + {"GetNextResourceFile", (PyCFunction)Res_GetNextResourceFile, 1, + PyDoc_STR("(SInt16 curRefNum) -> (SInt16 nextRefNum)")}, ++#endif /* !__LP64__ */ + {"FSOpenResFile", (PyCFunction)Res_FSOpenResFile, 1, + PyDoc_STR("(FSRef ref, SignedByte permission) -> (short _rv)")}, ++#ifndef __LP64__ + {"FSCreateResFile", (PyCFunction)Res_FSCreateResFile, 1, + PyDoc_STR("(FSRef parentRef, Buffer nameLength) -> (FSRef newRef, FSSpec newSpec)")}, + {"FSResourceFileAlreadyOpen", (PyCFunction)Res_FSResourceFileAlreadyOpen, 1, + PyDoc_STR("(FSRef resourceFileRef) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")}, + {"FSCreateResourceFile", (PyCFunction)Res_FSCreateResourceFile, 1, + PyDoc_STR("(FSRef parentRef, Buffer nameLength, Buffer forkNameLength) -> (FSRef newRef, FSSpec newSpec)")}, ++#endif /* !__LP64__ */ + {"FSOpenResourceFile", (PyCFunction)Res_FSOpenResourceFile, 1, + PyDoc_STR("(FSRef ref, Buffer forkNameLength, SignedByte permissions) -> (SInt16 refNum)")}, + {"Handle", (PyCFunction)Res_Handle, 1, +--- Mac/Modules/MacOS.c.orig 2006-07-26 05:20:54.000000000 +1000 ++++ Mac/Modules/MacOS.c 2009-09-10 21:47:34.000000000 +1000 +@@ -54,7 +54,7 @@ + do_close(rfobject *self) + { + if (self->isclosed ) return; +- (void)FSClose(self->fRefNum); ++ (void)FSCloseFork(self->fRefNum); + self->isclosed = 1; + } + +@@ -68,6 +68,7 @@ + long n; + PyObject *v; + OSErr err; ++ ByteCount n2; + + if (self->isclosed) { + PyErr_SetString(PyExc_ValueError, "Operation on closed file"); +@@ -81,13 +82,13 @@ + if (v == NULL) + return NULL; + +- err = FSRead(self->fRefNum, &n, PyString_AsString(v)); ++ err = FSReadFork(self->fRefNum, fsAtMark, 0, n, PyString_AsString(v), &n2); + if (err && err != eofErr) { + PyMac_Error(err); + Py_DECREF(v); + return NULL; + } +- _PyString_Resize(&v, n); ++ _PyString_Resize(&v, n2); + return v; + } + +@@ -109,7 +110,7 @@ + } + if (!PyArg_ParseTuple(args, "s#", &buffer, &size)) + return NULL; +- err = FSWrite(self->fRefNum, &size, buffer); ++ err = FSWriteFork(self->fRefNum, fsAtMark, 0, size, buffer, NULL); + if (err) { + PyMac_Error(err); + return NULL; +@@ -126,9 +127,9 @@ + static PyObject * + rf_seek(rfobject *self, PyObject *args) + { +- long amount, pos; ++ long amount; + int whence = SEEK_SET; +- long eof; ++ int mode; + OSErr err; + + if (self->isclosed) { +@@ -138,35 +139,23 @@ + if (!PyArg_ParseTuple(args, "l|i", &amount, &whence)) + return NULL; + +- if ((err = GetEOF(self->fRefNum, &eof))) +- goto ioerr; +- + switch (whence) { + case SEEK_CUR: +- if ((err = GetFPos(self->fRefNum, &pos))) +- goto ioerr; ++ mode = fsFromMark; + break; + case SEEK_END: +- pos = eof; ++ mode = fsFromLEOF; + break; + case SEEK_SET: +- pos = 0; ++ mode = fsFromStart; + break; + default: + PyErr_BadArgument(); + return NULL; + } + +- pos += amount; +- +- /* Don't bother implementing seek past EOF */ +- if (pos > eof || pos < 0) { +- PyErr_BadArgument(); +- return NULL; +- } +- +- if ((err = SetFPos(self->fRefNum, fsFromStart, pos)) ) { +-ioerr: ++ err = FSSetForkPosition(self->fRefNum, mode, amount); ++ if (err != noErr) { + PyMac_Error(err); + return NULL; + } +@@ -182,7 +171,7 @@ + static PyObject * + rf_tell(rfobject *self, PyObject *args) + { +- long where; ++ long long where; + OSErr err; + + if (self->isclosed) { +@@ -191,11 +180,13 @@ + } + if (!PyArg_ParseTuple(args, "")) + return NULL; +- if ((err = GetFPos(self->fRefNum, &where)) ) { ++ ++ err = FSGetForkPosition(self->fRefNum, &where); ++ if (err != noErr) { + PyMac_Error(err); + return NULL; + } +- return PyInt_FromLong(where); ++ return PyLong_FromLongLong(where); + } + + static char rf_close__doc__[] = +@@ -292,17 +283,61 @@ + static PyObject * + MacOS_GetCreatorAndType(PyObject *self, PyObject *args) + { +- FSSpec fss; +- FInfo info; + PyObject *creator, *type, *res; + OSErr err; +- +- if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss)) ++ FSRef ref; ++ FSCatalogInfo cataloginfo; ++ FileInfo* finfo; ++ ++ if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSRef, &ref)) { ++#ifndef __LP64__ ++ /* This function is documented to take an FSSpec as well, ++ * which only works in 32-bit mode. ++ */ ++ PyErr_Clear(); ++ FSSpec fss; ++ FInfo info; ++ ++ if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss)) ++ return NULL; ++ ++ if ((err = FSpGetFInfo(&fss, &info)) != noErr) { ++ return PyErr_Mac(MacOS_Error, err); ++ } ++ creator = PyString_FromStringAndSize( ++ (char *)&info.fdCreator, 4); ++ type = PyString_FromStringAndSize((char *)&info.fdType, 4); ++ res = Py_BuildValue("OO", creator, type); ++ Py_DECREF(creator); ++ Py_DECREF(type); ++ return res; ++#else /* __LP64__ */ ++ return NULL; ++#endif /* __LP64__ */ ++ } ++ ++ err = FSGetCatalogInfo(&ref, ++ kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo, ++ NULL, NULL, NULL); ++ if (err != noErr) { ++ PyErr_Mac(MacOS_Error, err); + return NULL; +- if ((err = FSpGetFInfo(&fss, &info)) != noErr) +- return PyErr_Mac(MacOS_Error, err); +- creator = PyString_FromStringAndSize((char *)&info.fdCreator, 4); +- type = PyString_FromStringAndSize((char *)&info.fdType, 4); ++ } ++ ++ if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) { ++ /* Directory: doesn't have type/creator info. ++ * ++ * The specific error code is for backward compatibility with ++ * earlier versions. ++ */ ++ PyErr_Mac(MacOS_Error, fnfErr); ++ return NULL; ++ ++ } ++ finfo = (FileInfo*)&(cataloginfo.finderInfo); ++ creator = PyString_FromStringAndSize((char*)&(finfo->fileCreator), 4); ++ type = PyString_FromStringAndSize((char*)&(finfo->fileType), 4); ++ + res = Py_BuildValue("OO", creator, type); + Py_DECREF(creator); + Py_DECREF(type); +@@ -314,20 +349,66 @@ + static PyObject * + MacOS_SetCreatorAndType(PyObject *self, PyObject *args) + { +- FSSpec fss; + ResType creator, type; +- FInfo info; ++ FSRef ref; ++ FileInfo* finfo; + OSErr err; +- ++ FSCatalogInfo cataloginfo; ++ + if (!PyArg_ParseTuple(args, "O&O&O&", ++ PyMac_GetFSRef, &ref, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) { ++#ifndef __LP64__ ++ /* Try to handle FSSpec arguments, for backward compatibility */ ++ FSSpec fss; ++ FInfo info; ++ ++ if (!PyArg_ParseTuple(args, "O&O&O&", + PyMac_GetFSSpec, &fss, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) ++ return NULL; ++ ++ if ((err = FSpGetFInfo(&fss, &info)) != noErr) ++ return PyErr_Mac(MacOS_Error, err); ++ ++ info.fdCreator = creator; ++ info.fdType = type; ++ ++ if ((err = FSpSetFInfo(&fss, &info)) != noErr) ++ return PyErr_Mac(MacOS_Error, err); ++ Py_INCREF(Py_None); ++ return Py_None; ++#else /* __LP64__ */ ++ return NULL; ++#endif /* __LP64__ */ ++ } ++ ++ err = FSGetCatalogInfo(&ref, ++ kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo, ++ NULL, NULL, NULL); ++ if (err != noErr) { ++ PyErr_Mac(MacOS_Error, err); + return NULL; +- if ((err = FSpGetFInfo(&fss, &info)) != noErr) +- return PyErr_Mac(MacOS_Error, err); +- info.fdCreator = creator; +- info.fdType = type; +- if ((err = FSpSetFInfo(&fss, &info)) != noErr) +- return PyErr_Mac(MacOS_Error, err); ++ } ++ ++ if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) { ++ /* Directory: doesn't have type/creator info. ++ * ++ * The specific error code is for backward compatibility with ++ * earlier versions. ++ */ ++ PyErr_Mac(MacOS_Error, fnfErr); ++ return NULL; ++ ++ } ++ finfo = (FileInfo*)&(cataloginfo.finderInfo); ++ finfo->fileCreator = creator; ++ finfo->fileType = type; ++ ++ err = FSSetCatalogInfo(&ref, kFSCatInfoFinderInfo, &cataloginfo); ++ if (err != noErr) { ++ PyErr_Mac(MacOS_Error, fnfErr); ++ return NULL; ++ } ++ + Py_INCREF(Py_None); + return Py_None; + } +@@ -399,6 +480,7 @@ + return Py_BuildValue("s", buf); + } + ++#ifndef __LP64__ + static char splash_doc[] = "Open a splash-screen dialog by resource-id (0=close)"; + + static PyObject * +@@ -470,6 +552,7 @@ + Py_INCREF(Py_None); + return Py_None; + } ++#endif /* !__LP64__ */ + + static char WMAvailable_doc[] = + "True if this process can interact with the display." +@@ -530,17 +613,18 @@ + { + OSErr err; + char *mode = "r"; +- FSSpec fss; +- SignedByte permission = 1; ++ FSRef ref; ++ SInt8 permission = fsRdPerm; + rfobject *fp; ++ HFSUniStr255 name; + +- if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSSpec, &fss, &mode)) ++ if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSRef, &ref, &mode)) + return NULL; + while (*mode) { + switch (*mode++) { + case '*': break; +- case 'r': permission = 1; break; +- case 'w': permission = 2; break; ++ case 'r': permission = fsRdPerm; break; ++ case 'w': permission = fsWrPerm; break; + case 'b': break; + default: + PyErr_BadArgument(); +@@ -548,33 +632,18 @@ + } + } + +- if ( (fp = newrfobject()) == NULL ) ++ err = FSGetResourceForkName(&name); ++ if (err != noErr) { ++ PyMac_Error(err); + return NULL; ++ } + +- err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum); ++ if ( (fp = newrfobject()) == NULL ) ++ return NULL; ++ + +- 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[PATHNAMELEN]; +- +- if ( (err=PyMac_GetFullPathname(&fss, pathname, PATHNAMELEN)) ) { +- PyMac_Error(err); +- Py_DECREF(fp); +- return NULL; +- } +- +- if ( (tfp = fopen(pathname, "w")) == NULL ) { +- PyMac_Error(fnfErr); /* What else... */ +- Py_DECREF(fp); +- return NULL; +- } +- fclose(tfp); +- err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum); +- } +- if ( err ) { ++ err = FSOpenFork(&ref, name.length, name.unicode, permission, &fp->fRefNum); ++ if (err != noErr) { + Py_DECREF(fp); + PyMac_Error(err); + return NULL; +@@ -589,10 +658,12 @@ + {"SetCreatorAndType", MacOS_SetCreatorAndType, 1, setcrtp_doc}, + {"GetErrorString", MacOS_GetErrorString, 1, geterr_doc}, + {"openrf", MacOS_openrf, 1, openrf_doc}, ++#ifndef __LP64__ + {"splash", MacOS_splash, 1, splash_doc}, + {"DebugStr", MacOS_DebugStr, 1, DebugStr_doc}, +- {"GetTicks", MacOS_GetTicks, 1, GetTicks_doc}, + {"SysBeep", MacOS_SysBeep, 1, SysBeep_doc}, ++#endif /* !__LP64__ */ ++ {"GetTicks", MacOS_GetTicks, 1, GetTicks_doc}, + {"WMAvailable", MacOS_WMAvailable, 1, WMAvailable_doc}, + {NULL, NULL} /* Sentinel */ + }; +--- Mac/Modules/file/_Filemodule.c.orig 2006-05-29 07:57:35.000000000 +1000 ++++ Mac/Modules/file/_Filemodule.c 2009-09-10 22:48:47.000000000 +1000 +@@ -18,9 +18,11 @@ + #include <Carbon/Carbon.h> + + #ifdef USE_TOOLBOX_OBJECT_GLUE ++#ifndef __LP64__ + extern int _PyMac_GetFSSpec(PyObject *v, FSSpec *spec); +-extern int _PyMac_GetFSRef(PyObject *v, FSRef *fsr); + extern PyObject *_PyMac_BuildFSSpec(FSSpec *spec); ++#endif /* !__LP64__ */ ++extern int _PyMac_GetFSRef(PyObject *v, FSRef *fsr); + extern PyObject *_PyMac_BuildFSRef(FSRef *spec); + + #define PyMac_GetFSSpec _PyMac_GetFSSpec +@@ -28,20 +30,26 @@ + #define PyMac_BuildFSSpec _PyMac_BuildFSSpec + #define PyMac_BuildFSRef _PyMac_BuildFSRef + #else ++#ifndef __LP64__ + extern int PyMac_GetFSSpec(PyObject *v, FSSpec *spec); +-extern int PyMac_GetFSRef(PyObject *v, FSRef *fsr); + extern PyObject *PyMac_BuildFSSpec(FSSpec *spec); ++#endif /* !__LP64__ */ ++extern int PyMac_GetFSRef(PyObject *v, FSRef *fsr); + extern PyObject *PyMac_BuildFSRef(FSRef *spec); + #endif + + /* Forward declarations */ ++#ifndef __LP64__ + static PyObject *FInfo_New(FInfo *itself); +-static PyObject *FSRef_New(FSRef *itself); + static PyObject *FSSpec_New(FSSpec *itself); ++#define FSSpec_Convert PyMac_GetFSSpec ++#endif /* !__LP64__ */ ++static PyObject *FSRef_New(FSRef *itself); + static PyObject *Alias_New(AliasHandle itself); ++#ifndef __LP64__ + static int FInfo_Convert(PyObject *v, FInfo *p_itself); ++#endif /* !__LP64__ */ + #define FSRef_Convert PyMac_GetFSRef +-#define FSSpec_Convert PyMac_GetFSSpec + static int Alias_Convert(PyObject *v, AliasHandle *p_itself); + + /* +@@ -62,6 +70,7 @@ + /* + ** Optional fsspec and fsref pointers. None will pass NULL + */ ++#ifndef __LP64__ + static int + myPyMac_GetOptFSSpecPtr(PyObject *v, FSSpec **spec) + { +@@ -71,6 +80,7 @@ + } + return PyMac_GetFSSpec(v, *spec); + } ++#endif /* !__LP64__ */ + + static int + myPyMac_GetOptFSRefPtr(PyObject *v, FSRef **ref) +@@ -92,6 +102,7 @@ + return Py_BuildValue("u#", itself->unicode, itself->length); + } + ++#ifndef __LP64__ + static OSErr + _PyMac_GetFullPathname(FSSpec *fss, char *path, int len) + { +@@ -135,6 +146,7 @@ + } + return 0; + } ++#endif /* !__LP64__ */ + + + static PyObject *File_Error; +@@ -282,12 +294,28 @@ + + static PyObject *FSCatalogInfo_get_permissions(FSCatalogInfoObject *self, void *closure) + { +- return Py_BuildValue("(llll)", self->ob_itself.permissions[0], self->ob_itself.permissions[1], self->ob_itself.permissions[2], self->ob_itself.permissions[3]); ++ FSPermissionInfo* info = (FSPermissionInfo*)&(self->ob_itself.permissions); ++ return Py_BuildValue("(llll)", info->userID, info->groupID, info->userAccess, info->mode); + } + + static int FSCatalogInfo_set_permissions(FSCatalogInfoObject *self, PyObject *v, void *closure) + { +- return PyArg_Parse(v, "(llll)", &self->ob_itself.permissions[0], &self->ob_itself.permissions[1], &self->ob_itself.permissions[2], &self->ob_itself.permissions[3])-1; ++ long userID; ++ long groupID; ++ long userAccess; ++ long mode; ++ int r; ++ ++ FSPermissionInfo* info = (FSPermissionInfo*)&(self->ob_itself.permissions); ++ ++ r = PyArg_Parse(v, "(llll)", &userID, &groupID, &userAccess, &mode); ++ if (!r) { ++ return -1; ++ } ++ info->userID = userID; ++ info->groupID = groupID; ++ info->userAccess = userAccess; ++ info->mode = mode; + return 0; + } + +@@ -501,6 +529,7 @@ + + /* ----------------------- Object type FInfo ------------------------ */ + ++#ifndef __LP64__ + static PyTypeObject FInfo_Type; + + #define FInfo_Check(x) ((x)->ob_type == &FInfo_Type || PyObject_TypeCheck((x), &FInfo_Type)) +@@ -682,6 +711,7 @@ + FInfo_tp_free, /* tp_free */ + }; + ++#endif /* !__LP64__ */ + /* --------------------- End object type FInfo ---------------------- */ + + +@@ -729,6 +759,7 @@ + self->ob_type->tp_free((PyObject *)self); + } + ++#ifndef __LP64__ + static PyObject *Alias_ResolveAlias(AliasObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -818,6 +849,7 @@ + wasChanged); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *Alias_FSResolveAliasWithMountFlags(AliasObject *_self, PyObject *_args) + { +@@ -891,6 +923,7 @@ + } + + static PyMethodDef Alias_methods[] = { ++#ifndef __LP64__ + {"ResolveAlias", (PyCFunction)Alias_ResolveAlias, 1, + PyDoc_STR("(FSSpec fromFile) -> (FSSpec target, Boolean wasChanged)")}, + {"GetAliasInfo", (PyCFunction)Alias_GetAliasInfo, 1, +@@ -899,6 +932,7 @@ + PyDoc_STR("(FSSpec fromFile, unsigned long mountFlags) -> (FSSpec target, Boolean wasChanged)")}, + {"FollowFinderAlias", (PyCFunction)Alias_FollowFinderAlias, 1, + PyDoc_STR("(FSSpec fromFile, Boolean logon) -> (FSSpec target, Boolean wasChanged)")}, ++#endif /* !__LP64__ */ + {"FSResolveAliasWithMountFlags", (PyCFunction)Alias_FSResolveAliasWithMountFlags, 1, + PyDoc_STR("(FSRef fromFile, unsigned long mountFlags) -> (FSRef target, Boolean wasChanged)")}, + {"FSResolveAlias", (PyCFunction)Alias_FSResolveAlias, 1, +@@ -1033,6 +1067,7 @@ + + + /* ----------------------- Object type FSSpec ----------------------- */ ++#ifndef __LP64__ + + static PyTypeObject FSSpec_Type; + +@@ -1488,6 +1523,7 @@ + FSSpec_tp_free, /* tp_free */ + }; + ++#endif /* !__LP64__ */ + /* --------------------- End object type FSSpec --------------------- */ + + +@@ -1568,7 +1604,9 @@ + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo catalogInfo; + FSRef newRef; ++#ifndef __LP64__ + FSSpec newSpec; ++#endif /* !__LP64__ */ + if (!PyArg_ParseTuple(_args, "u#lO&", + &nameLength__in__, &nameLength__in_len__, + &whichInfo, +@@ -1580,11 +1618,20 @@ + whichInfo, + &catalogInfo, + &newRef, +- &newSpec); ++#ifndef __LP64__ ++ &newSpec ++#else ++ NULL ++#endif /* !__LP64__ */ ++ ); + if (_err != noErr) return PyMac_Error(_err); ++#ifndef __LP64__ + _res = Py_BuildValue("O&O&", + FSRef_New, &newRef, + FSSpec_New, &newSpec); ++#else ++ _res = Py_BuildValue("O&O", FSRef_New, &newRef, Py_None); ++#endif /* !__LP64__ */ + return _res; + } + +@@ -1598,7 +1645,9 @@ + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo catalogInfo; + FSRef newRef; ++#ifndef __LP64__ + FSSpec newSpec; ++#endif /* !__LP64__ */ + UInt32 newDirID; + if (!PyArg_ParseTuple(_args, "u#lO&", + &nameLength__in__, &nameLength__in_len__, +@@ -1611,13 +1660,25 @@ + whichInfo, + &catalogInfo, + &newRef, ++#ifndef __LP64__ + &newSpec, ++#else ++ NULL, ++#endif /* !__LP64__ */ + &newDirID); + if (_err != noErr) return PyMac_Error(_err); ++ ++#ifndef __LP64__ + _res = Py_BuildValue("O&O&l", + FSRef_New, &newRef, + FSSpec_New, &newSpec, + newDirID); ++#else ++ _res = Py_BuildValue("O&Ol", ++ FSRef_New, &newRef, ++ Py_None, ++ newDirID); ++#endif /* !__LP64__ */ + return _res; + } + +@@ -1699,7 +1760,9 @@ + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo catalogInfo; + HFSUniStr255 outName; ++#ifndef __LP64__ + FSSpec fsSpec; ++#endif /* !__LP64__ */ + FSRef parentRef; + if (!PyArg_ParseTuple(_args, "l", + &whichInfo)) +@@ -1708,14 +1771,26 @@ + whichInfo, + &catalogInfo, + &outName, ++#ifndef __LP64__ + &fsSpec, ++#else ++ NULL, ++#endif /* !__LP64__ */ + &parentRef); + if (_err != noErr) return PyMac_Error(_err); ++#ifndef __LP64__ + _res = Py_BuildValue("O&O&O&O&", + FSCatalogInfo_New, &catalogInfo, + PyMac_BuildHFSUniStr255, &outName, + FSSpec_New, &fsSpec, + FSRef_New, &parentRef); ++#else ++ _res = Py_BuildValue("O&O&OO&", ++ FSCatalogInfo_New, &catalogInfo, ++ PyMac_BuildHFSUniStr255, &outName, ++ Py_None, ++ FSRef_New, &parentRef); ++#endif /* !__LP64__ */ + return _res; + } + +@@ -1784,7 +1859,7 @@ + UniCharCount forkNameLength__len__; + int forkNameLength__in_len__; + SInt8 permissions; +- SInt16 forkRefNum; ++ FSIORefNum forkRefNum; + if (!PyArg_ParseTuple(_args, "u#b", + &forkNameLength__in__, &forkNameLength__in_len__, + &permissions)) +@@ -2034,7 +2109,7 @@ + + /* --------------------- End object type FSRef ---------------------- */ + +- ++#ifndef __LP64__ + static PyObject *File_UnmountVol(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -2562,6 +2637,7 @@ + FSSpec_New, &spec); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *File_FSGetForkPosition(PyObject *_self, PyObject *_args) + { +@@ -2785,6 +2861,7 @@ + return _res; + } + ++#ifndef __LP64__ + static PyObject *File_NewAlias(PyObject *_self, PyObject *_args) + { + PyObject *_res = NULL; +@@ -2933,6 +3010,7 @@ + wasAliased); + return _res; + } ++#endif /* !__LP64__ */ + + static PyObject *File_FSNewAlias(PyObject *_self, PyObject *_args) + { +@@ -3050,6 +3128,7 @@ + } + + static PyMethodDef File_methods[] = { ++#ifndef __LP64__ + {"UnmountVol", (PyCFunction)File_UnmountVol, 1, + PyDoc_STR("(Str63 volName, short vRefNum) -> None")}, + {"FlushVol", (PyCFunction)File_FlushVol, 1, +@@ -3100,6 +3179,7 @@ + PyDoc_STR("(short vRefNum, long dirID, Str255 oldName, long newDirID, Str255 newName) -> None")}, + {"FSMakeFSSpec", (PyCFunction)File_FSMakeFSSpec, 1, + PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> (FSSpec spec)")}, ++#endif /* !__LP64__ */ + {"FSGetForkPosition", (PyCFunction)File_FSGetForkPosition, 1, + PyDoc_STR("(SInt16 forkRefNum) -> (SInt64 position)")}, + {"FSSetForkPosition", (PyCFunction)File_FSSetForkPosition, 1, +@@ -3124,6 +3204,7 @@ + PyDoc_STR("(UInt8 * path, FNMessage message, OptionBits flags) -> None")}, + {"FNNotifyAll", (PyCFunction)File_FNNotifyAll, 1, + PyDoc_STR("(FNMessage message, OptionBits flags) -> None")}, ++#ifndef __LP64__ + {"NewAlias", (PyCFunction)File_NewAlias, 1, + PyDoc_STR("(FSSpec fromFile, FSSpec target) -> (AliasHandle alias)")}, + {"NewAliasMinimalFromFullPath", (PyCFunction)File_NewAliasMinimalFromFullPath, 1, +@@ -3136,6 +3217,7 @@ + PyDoc_STR("(FSSpec fromFile, FSSpec target, AliasHandle alias) -> (Boolean wasChanged)")}, + {"ResolveAliasFileWithMountFlagsNoUI", (PyCFunction)File_ResolveAliasFileWithMountFlagsNoUI, 1, + PyDoc_STR("(FSSpec theSpec, Boolean resolveAliasChains, unsigned long mountFlags) -> (FSSpec theSpec, Boolean targetIsFolder, Boolean wasAliased)")}, ++#endif /* !__LP64__ */ + {"FSNewAlias", (PyCFunction)File_FSNewAlias, 1, + PyDoc_STR("(FSRef fromFile, FSRef target) -> (AliasHandle inAlias)")}, + {"FSResolveAliasFileWithMountFlags", (PyCFunction)File_FSResolveAliasFileWithMountFlags, 1, +@@ -3150,7 +3232,7 @@ + }; + + +- ++#ifndef __LP64__ + int + PyMac_GetFSSpec(PyObject *v, FSSpec *spec) + { +@@ -3188,12 +3270,15 @@ + } + return 0; + } ++#endif /* !__LP64__ */ + + int + PyMac_GetFSRef(PyObject *v, FSRef *fsr) + { + OSStatus err; ++#ifndef __LP64__ + FSSpec fss; ++#endif /* !__LP64__ */ + + if (FSRef_Check(v)) { + *fsr = ((FSRefObject *)v)->ob_itself; +@@ -3211,6 +3296,7 @@ + return !err; + } + /* XXXX Should try unicode here too */ ++#ifndef __LP64__ + /* Otherwise we try to go via an FSSpec */ + if (FSSpec_Check(v)) { + fss = ((FSSpecObject *)v)->ob_itself; +@@ -3219,15 +3305,18 @@ + PyMac_Error(err); + return 0; + } ++#endif /* !__LP64__ */ + PyErr_SetString(PyExc_TypeError, "FSRef, FSSpec or pathname required"); + return 0; + } + ++#ifndef __LP64__ + extern PyObject * + PyMac_BuildFSSpec(FSSpec *spec) + { + return FSSpec_New(spec); + } ++#endif /* !__LP64__ */ + + extern PyObject * + PyMac_BuildFSRef(FSRef *spec) +@@ -3242,10 +3331,11 @@ + PyObject *d; + + +- ++#ifndef __LP64__ + PyMac_INIT_TOOLBOX_OBJECT_NEW(FSSpec *, PyMac_BuildFSSpec); +- PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef); + PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSSpec, PyMac_GetFSSpec); ++#endif /* !__LP64__ */ ++ PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef); + PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef); + + +@@ -3262,6 +3352,7 @@ + /* Backward-compatible name */ + Py_INCREF(&FSCatalogInfo_Type); + PyModule_AddObject(m, "FSCatalogInfoType", (PyObject *)&FSCatalogInfo_Type); ++#ifndef __LP64__ + FInfo_Type.ob_type = &PyType_Type; + if (PyType_Ready(&FInfo_Type) < 0) return; + Py_INCREF(&FInfo_Type); +@@ -3269,6 +3360,7 @@ + /* Backward-compatible name */ + Py_INCREF(&FInfo_Type); + PyModule_AddObject(m, "FInfoType", (PyObject *)&FInfo_Type); ++#endif /* !__LP64__ */ + Alias_Type.ob_type = &PyType_Type; + if (PyType_Ready(&Alias_Type) < 0) return; + Py_INCREF(&Alias_Type); +@@ -3276,6 +3368,7 @@ + /* Backward-compatible name */ + Py_INCREF(&Alias_Type); + PyModule_AddObject(m, "AliasType", (PyObject *)&Alias_Type); ++#ifndef __LP64__ + FSSpec_Type.ob_type = &PyType_Type; + if (PyType_Ready(&FSSpec_Type) < 0) return; + Py_INCREF(&FSSpec_Type); +@@ -3283,6 +3376,7 @@ + /* Backward-compatible name */ + Py_INCREF(&FSSpec_Type); + PyModule_AddObject(m, "FSSpecType", (PyObject *)&FSSpec_Type); ++#endif /* !__LP64__ */ + FSRef_Type.ob_type = &PyType_Type; + if (PyType_Ready(&FSRef_Type) < 0) return; + Py_INCREF(&FSRef_Type); +Index: Lib/plat-mac/macresource.py +=================================================================== +--- Lib/plat-mac/macresource.py (revision 74680) ++++ Lib/plat-mac/macresource.py (revision 74681) +@@ -79,8 +79,8 @@ + AppleSingle file""" + try: + refno = Res.FSpOpenResFile(pathname, 1) +- except Res.Error, arg: +- if arg[0] in (-37, -39): ++ except (AttributeError, Res.Error), arg: ++ if isinstance(arg, AttributeError) or arg[0] in (-37, -39): + # No resource fork. We may be on OSX, and this may be either + # a data-fork based resource file or a AppleSingle file + # from the CVS repository. +@@ -106,8 +106,8 @@ + try: + refno = Res.FSpOpenResFile(pathname, 1) + Res.CloseResFile(refno) +- except Res.Error, arg: +- if arg[0] in (-37, -39): ++ except (AttributeError, Res.Error), arg: ++ if isinstance(arg, AttributeError) or arg[0] in (-37, -39): + # No resource fork. We may be on OSX, and this may be either + # a data-fork based resource file or a AppleSingle file + # from the CVS repository. +Index: Lib/plat-mac/applesingle.py +=================================================================== +--- Lib/plat-mac/applesingle.py (revision 74680) ++++ Lib/plat-mac/applesingle.py (revision 74681) +@@ -119,8 +119,13 @@ + if not hasattr(infile, 'read'): + if isinstance(infile, Carbon.File.Alias): + infile = infile.ResolveAlias()[0] +- if isinstance(infile, (Carbon.File.FSSpec, Carbon.File.FSRef)): +- infile = infile.as_pathname() ++ ++ if hasattr(Carbon.File, "FSSpec"): ++ if isinstance(infile, (Carbon.File.FSSpec, Carbon.File.FSRef)): ++ infile = infile.as_pathname() ++ else: ++ if isinstance(infile, Carbon.File.FSRef): ++ infile = infile.as_pathname() + infile = open(infile, 'rb') + + asfile = AppleSingle(infile, verbose=verbose) +Index: Mac/scripts/BuildApplet.py +=================================================================== +--- Mac/scripts/BuildApplet.py (revision 74680) ++++ Mac/scripts/BuildApplet.py (revision 74681) +@@ -12,7 +12,10 @@ + + import os + import MacOS +-import EasyDialogs ++try: ++ import EasyDialogs ++except ImportError: ++ EasyDialogs = None + import buildtools + import getopt + +@@ -32,7 +35,10 @@ + try: + buildapplet() + except buildtools.BuildError, detail: +- EasyDialogs.Message(detail) ++ if EasyDialogs is None: ++ print detail ++ else: ++ EasyDialogs.Message(detail) + + + def buildapplet(): +@@ -46,6 +52,10 @@ + # Ask for source text if not specified in sys.argv[1:] + + if not sys.argv[1:]: ++ if EasyDialogs is None: ++ usage() ++ sys.exit(1) ++ + filename = EasyDialogs.AskFileForOpen(message='Select Python source or applet:', + typeList=('TEXT', 'APPL')) + if not filename: +Index: Lib/plat-mac/buildtools.py +=================================================================== +--- Lib/plat-mac/buildtools.py (revision 74680) ++++ Lib/plat-mac/buildtools.py (revision 74681) +@@ -15,7 +15,10 @@ + import MacOS + import macostools + import macresource +-import EasyDialogs ++try: ++ import EasyDialogs ++except ImportError: ++ EasyDialogs = None + import shutil + + +@@ -67,9 +70,13 @@ + rsrcname=None, others=[], raw=0, progress="default", destroot=""): + + if progress == "default": +- progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120) +- progress.label("Compiling...") +- progress.inc(0) ++ if EasyDialogs is None: ++ print "Compiling %s"%(os.path.split(filename)[1],) ++ process = None ++ else: ++ progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120) ++ progress.label("Compiling...") ++ progress.inc(0) + # check for the script name being longer than 32 chars. This may trigger a bug + # on OSX that can destroy your sourcefile. + if '#' in os.path.split(filename)[1]: +@@ -119,7 +126,11 @@ + if MacOS.runtimemodel == 'macho': + raise BuildError, "No updating yet for MachO applets" + if progress: +- progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120) ++ if EasyDialogs is None: ++ print "Updating %s"%(os.path.split(filename)[1],) ++ progress = None ++ else: ++ progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120) + else: + progress = None + if not output: |
