/* ========================== Module _File ========================== */ #include "Python.h" #ifdef _WIN32 #include "pywintoolbox.h" #else #include "macglue.h" #include "pymactoolbox.h" #endif /* Macro to test whether a weak-loaded CFM function exists */ #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ PyErr_SetString(PyExc_NotImplementedError, \ "Not available in this shared library/OS version"); \ return NULL; \ }} while(0) #ifdef WITHOUT_FRAMEWORKS #include #else #include #endif /* ** Parse/generate objsect */ static PyObject * PyMac_BuildHFSUniStr255(HFSUniStr255 *itself) { return Py_BuildValue("u#", itself->unicode, itself->length); } #if 0 static int PyMac_GetHFSUniStr255(PyObject *v, HFSUniStr255 *itself) { return PyArg_ParseTuple(v, "O&O&O&O&O&", PyMac_GetFixed, &itself->ascent, PyMac_GetFixed, &itself->descent, PyMac_GetFixed, &itself->leading, PyMac_GetFixed, &itself->widMax, ResObj_Convert, &itself->wTabHandle); } #endif /* ** Parse/generate objsect */ static PyObject * PyMac_BuildFInfo(FInfo *itself) { return Py_BuildValue("O&O&HO&h", PyMac_BuildOSType, itself->fdType, PyMac_BuildOSType, itself->fdCreator, itself->fdFlags, PyMac_BuildPoint, &itself->fdLocation, itself->fdFldr); } static int PyMac_GetFInfo(PyObject *v, FInfo *itself) { return PyArg_ParseTuple(v, "O&O&HO&h", PyMac_GetOSType, &itself->fdType, PyMac_GetOSType, &itself->fdCreator, &itself->fdFlags, PyMac_GetPoint, &itself->fdLocation, &itself->fdFldr); } static PyObject *File_Error; static PyObject *File_UnmountVol(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; Str63 volName; short vRefNum; if (!PyArg_ParseTuple(_args, "O&h", PyMac_GetStr255, volName, &vRefNum)) return NULL; _err = UnmountVol(volName, vRefNum); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FlushVol(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; Str63 volName; short vRefNum; if (!PyArg_ParseTuple(_args, "O&h", PyMac_GetStr255, volName, &vRefNum)) return NULL; _err = FlushVol(volName, vRefNum); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_HSetVol(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; Str63 volName; short vRefNum; long dirID; if (!PyArg_ParseTuple(_args, "O&hl", PyMac_GetStr255, volName, &vRefNum, &dirID)) return NULL; _err = HSetVol(volName, vRefNum, dirID); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSClose(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short refNum; if (!PyArg_ParseTuple(_args, "h", &refNum)) return NULL; _err = FSClose(refNum); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_Allocate(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short refNum; long count; if (!PyArg_ParseTuple(_args, "h", &refNum)) return NULL; _err = Allocate(refNum, &count); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("l", count); return _res; } static PyObject *File_GetEOF(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short refNum; long logEOF; if (!PyArg_ParseTuple(_args, "h", &refNum)) return NULL; _err = GetEOF(refNum, &logEOF); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("l", logEOF); return _res; } static PyObject *File_SetEOF(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short refNum; long logEOF; if (!PyArg_ParseTuple(_args, "hl", &refNum, &logEOF)) return NULL; _err = SetEOF(refNum, logEOF); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_GetFPos(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short refNum; long filePos; if (!PyArg_ParseTuple(_args, "h", &refNum)) return NULL; _err = GetFPos(refNum, &filePos); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("l", filePos); return _res; } static PyObject *File_SetFPos(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short refNum; short posMode; long posOff; if (!PyArg_ParseTuple(_args, "hhl", &refNum, &posMode, &posOff)) return NULL; _err = SetFPos(refNum, posMode, posOff); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_GetVRefNum(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short fileRefNum; short vRefNum; if (!PyArg_ParseTuple(_args, "h", &fileRefNum)) return NULL; _err = GetVRefNum(fileRefNum, &vRefNum); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("h", vRefNum); return _res; } static PyObject *File_HGetVol(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; StringPtr volName; short vRefNum; long dirID; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetStr255, &volName)) return NULL; _err = HGetVol(volName, &vRefNum, &dirID); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("hl", vRefNum, dirID); return _res; } static PyObject *File_HOpen(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; SInt8 permission; short refNum; if (!PyArg_ParseTuple(_args, "hlO&b", &vRefNum, &dirID, PyMac_GetStr255, fileName, &permission)) return NULL; _err = HOpen(vRefNum, dirID, fileName, permission, &refNum); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("h", refNum); return _res; } static PyObject *File_HOpenDF(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; SInt8 permission; short refNum; if (!PyArg_ParseTuple(_args, "hlO&b", &vRefNum, &dirID, PyMac_GetStr255, fileName, &permission)) return NULL; _err = HOpenDF(vRefNum, dirID, fileName, permission, &refNum); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("h", refNum); return _res; } static PyObject *File_HOpenRF(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; SInt8 permission; short refNum; if (!PyArg_ParseTuple(_args, "hlO&b", &vRefNum, &dirID, PyMac_GetStr255, fileName, &permission)) return NULL; _err = HOpenRF(vRefNum, dirID, fileName, permission, &refNum); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("h", refNum); return _res; } static PyObject *File_AllocContig(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short refNum; long count; if (!PyArg_ParseTuple(_args, "h", &refNum)) return NULL; _err = AllocContig(refNum, &count); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("l", count); return _res; } static PyObject *File_HCreate(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; OSType creator; OSType fileType; if (!PyArg_ParseTuple(_args, "hlO&O&O&", &vRefNum, &dirID, PyMac_GetStr255, fileName, PyMac_GetOSType, &creator, PyMac_GetOSType, &fileType)) return NULL; _err = HCreate(vRefNum, dirID, fileName, creator, fileType); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_DirCreate(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long parentDirID; Str255 directoryName; long createdDirID; if (!PyArg_ParseTuple(_args, "hlO&", &vRefNum, &parentDirID, PyMac_GetStr255, directoryName)) return NULL; _err = DirCreate(vRefNum, parentDirID, directoryName, &createdDirID); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("l", createdDirID); return _res; } static PyObject *File_HDelete(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; if (!PyArg_ParseTuple(_args, "hlO&", &vRefNum, &dirID, PyMac_GetStr255, fileName)) return NULL; _err = HDelete(vRefNum, dirID, fileName); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_HGetFInfo(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; FInfo fndrInfo; if (!PyArg_ParseTuple(_args, "hlO&", &vRefNum, &dirID, PyMac_GetStr255, fileName)) return NULL; _err = HGetFInfo(vRefNum, dirID, fileName, &fndrInfo); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildFInfo, &fndrInfo); return _res; } static PyObject *File_HSetFInfo(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; FInfo fndrInfo; if (!PyArg_ParseTuple(_args, "hlO&O&", &vRefNum, &dirID, PyMac_GetStr255, fileName, PyMac_GetFInfo, &fndrInfo)) return NULL; _err = HSetFInfo(vRefNum, dirID, fileName, &fndrInfo); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_HSetFLock(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; if (!PyArg_ParseTuple(_args, "hlO&", &vRefNum, &dirID, PyMac_GetStr255, fileName)) return NULL; _err = HSetFLock(vRefNum, dirID, fileName); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_HRstFLock(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; if (!PyArg_ParseTuple(_args, "hlO&", &vRefNum, &dirID, PyMac_GetStr255, fileName)) return NULL; _err = HRstFLock(vRefNum, dirID, fileName); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_HRename(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 oldName; Str255 newName; if (!PyArg_ParseTuple(_args, "hlO&O&", &vRefNum, &dirID, PyMac_GetStr255, oldName, PyMac_GetStr255, newName)) return NULL; _err = HRename(vRefNum, dirID, oldName, newName); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_CatMove(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 oldName; long newDirID; Str255 newName; if (!PyArg_ParseTuple(_args, "hlO&lO&", &vRefNum, &dirID, PyMac_GetStr255, oldName, &newDirID, PyMac_GetStr255, newName)) return NULL; _err = CatMove(vRefNum, dirID, oldName, newDirID, newName); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSMakeFSSpec(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short vRefNum; long dirID; Str255 fileName; FSSpec spec; if (!PyArg_ParseTuple(_args, "hlO&", &vRefNum, &dirID, PyMac_GetStr255, fileName)) return NULL; _err = FSMakeFSSpec(vRefNum, dirID, fileName, &spec); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildFSSpec, &spec); return _res; } static PyObject *File_FSpOpenDF(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; SInt8 permission; short refNum; if (!PyArg_ParseTuple(_args, "O&b", PyMac_GetFSSpec, &spec, &permission)) return NULL; _err = FSpOpenDF(&spec, permission, &refNum); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("h", refNum); return _res; } static PyObject *File_FSpOpenRF(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; SInt8 permission; short refNum; if (!PyArg_ParseTuple(_args, "O&b", PyMac_GetFSSpec, &spec, &permission)) return NULL; _err = FSpOpenRF(&spec, permission, &refNum); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("h", refNum); return _res; } static PyObject *File_FSpCreate(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; OSType creator; OSType fileType; ScriptCode scriptTag; if (!PyArg_ParseTuple(_args, "O&O&O&h", PyMac_GetFSSpec, &spec, PyMac_GetOSType, &creator, PyMac_GetOSType, &fileType, &scriptTag)) return NULL; _err = FSpCreate(&spec, creator, fileType, scriptTag); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSpDirCreate(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; ScriptCode scriptTag; long createdDirID; if (!PyArg_ParseTuple(_args, "O&h", PyMac_GetFSSpec, &spec, &scriptTag)) return NULL; _err = FSpDirCreate(&spec, scriptTag, &createdDirID); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("l", createdDirID); return _res; } static PyObject *File_FSpDelete(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetFSSpec, &spec)) return NULL; _err = FSpDelete(&spec); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSpGetFInfo(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; FInfo fndrInfo; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetFSSpec, &spec)) return NULL; _err = FSpGetFInfo(&spec, &fndrInfo); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildFInfo, &fndrInfo); return _res; } static PyObject *File_FSpSetFInfo(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; FInfo fndrInfo; if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetFSSpec, &spec, PyMac_GetFInfo, &fndrInfo)) return NULL; _err = FSpSetFInfo(&spec, &fndrInfo); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSpSetFLock(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetFSSpec, &spec)) return NULL; _err = FSpSetFLock(&spec); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSpRstFLock(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetFSSpec, &spec)) return NULL; _err = FSpRstFLock(&spec); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSpRename(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec spec; Str255 newName; if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetFSSpec, &spec, PyMac_GetStr255, newName)) return NULL; _err = FSpRename(&spec, newName); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSpCatMove(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec source; FSSpec dest; if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetFSSpec, &source, PyMac_GetFSSpec, &dest)) return NULL; _err = FSpCatMove(&source, &dest); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSpExchangeFiles(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec source; FSSpec dest; if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetFSSpec, &source, PyMac_GetFSSpec, &dest)) return NULL; _err = FSpExchangeFiles(&source, &dest); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSpMakeFSRef(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSSpec source; FSRef newRef; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetFSSpec, &source)) return NULL; _err = FSpMakeFSRef(&source, &newRef); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildFSRef, &newRef); return _res; } static PyObject *File_FSMakeFSRefUnicode(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef parentRef; UniChar *nameLength__in__; UniCharCount nameLength__len__; int nameLength__in_len__; TextEncoding textEncodingHint; FSRef newRef; if (!PyArg_ParseTuple(_args, "O&u#l", PyMac_GetFSRef, &parentRef, &nameLength__in__, &nameLength__in_len__, &textEncodingHint)) return NULL; nameLength__len__ = nameLength__in_len__; _err = FSMakeFSRefUnicode(&parentRef, nameLength__len__, nameLength__in__, textEncodingHint, &newRef); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildFSRef, &newRef); return _res; } static PyObject *File_FSCompareFSRefs(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef ref1; FSRef ref2; if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetFSRef, &ref1, PyMac_GetFSRef, &ref2)) return NULL; _err = FSCompareFSRefs(&ref1, &ref2); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSDeleteObject(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef ref; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetFSRef, &ref)) return NULL; _err = FSDeleteObject(&ref); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSMoveObject(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef ref; FSRef destDirectory; FSRef newRef; if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetFSRef, &ref, PyMac_GetFSRef, &destDirectory)) return NULL; _err = FSMoveObject(&ref, &destDirectory, &newRef); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildFSRef, &newRef); return _res; } static PyObject *File_FSExchangeObjects(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef ref; FSRef destRef; if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetFSRef, &ref, PyMac_GetFSRef, &destRef)) return NULL; _err = FSExchangeObjects(&ref, &destRef); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSRenameUnicode(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef ref; UniChar *nameLength__in__; UniCharCount nameLength__len__; int nameLength__in_len__; TextEncoding textEncodingHint; FSRef newRef; if (!PyArg_ParseTuple(_args, "O&u#l", PyMac_GetFSRef, &ref, &nameLength__in__, &nameLength__in_len__, &textEncodingHint)) return NULL; nameLength__len__ = nameLength__in_len__; _err = FSRenameUnicode(&ref, nameLength__len__, nameLength__in__, textEncodingHint, &newRef); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildFSRef, &newRef); return _res; } static PyObject *File_FSCreateFork(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef ref; UniChar *forkNameLength__in__; UniCharCount forkNameLength__len__; int forkNameLength__in_len__; if (!PyArg_ParseTuple(_args, "O&u#", PyMac_GetFSRef, &ref, &forkNameLength__in__, &forkNameLength__in_len__)) return NULL; forkNameLength__len__ = forkNameLength__in_len__; _err = FSCreateFork(&ref, forkNameLength__len__, forkNameLength__in__); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSDeleteFork(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef ref; UniChar *forkNameLength__in__; UniCharCount forkNameLength__len__; int forkNameLength__in_len__; if (!PyArg_ParseTuple(_args, "O&u#", PyMac_GetFSRef, &ref, &forkNameLength__in__, &forkNameLength__in_len__)) return NULL; forkNameLength__len__ = forkNameLength__in_len__; _err = FSDeleteFork(&ref, forkNameLength__len__, forkNameLength__in__); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSOpenFork(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; FSRef ref; UniChar *forkNameLength__in__; UniCharCount forkNameLength__len__; int forkNameLength__in_len__; SInt8 permissions; SInt16 forkRefNum; if (!PyArg_ParseTuple(_args, "O&u#b", PyMac_GetFSRef, &ref, &forkNameLength__in__, &forkNameLength__in_len__, &permissions)) return NULL; forkNameLength__len__ = forkNameLength__in_len__; _err = FSOpenFork(&ref, forkNameLength__len__, forkNameLength__in__, permissions, &forkRefNum); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("h", forkRefNum); return _res; } static PyObject *File_FSGetForkPosition(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; SInt16 forkRefNum; SInt64 position; if (!PyArg_ParseTuple(_args, "h", &forkRefNum)) return NULL; _err = FSGetForkPosition(forkRefNum, &position); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("L", position); return _res; } static PyObject *File_FSSetForkPosition(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; SInt16 forkRefNum; UInt16 positionMode; SInt64 positionOffset; if (!PyArg_ParseTuple(_args, "hHL", &forkRefNum, &positionMode, &positionOffset)) return NULL; _err = FSSetForkPosition(forkRefNum, positionMode, positionOffset); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSGetForkSize(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; SInt16 forkRefNum; SInt64 forkSize; if (!PyArg_ParseTuple(_args, "h", &forkRefNum)) return NULL; _err = FSGetForkSize(forkRefNum, &forkSize); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("L", forkSize); return _res; } static PyObject *File_FSSetForkSize(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; SInt16 forkRefNum; UInt16 positionMode; SInt64 positionOffset; if (!PyArg_ParseTuple(_args, "hHL", &forkRefNum, &positionMode, &positionOffset)) return NULL; _err = FSSetForkSize(forkRefNum, positionMode, positionOffset); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSAllocateFork(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; SInt16 forkRefNum; FSAllocationFlags flags; UInt16 positionMode; SInt64 positionOffset; UInt64 requestCount; UInt64 actualCount; if (!PyArg_ParseTuple(_args, "hHHLL", &forkRefNum, &flags, &positionMode, &positionOffset, &requestCount)) return NULL; _err = FSAllocateFork(forkRefNum, flags, positionMode, positionOffset, requestCount, &actualCount); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("L", actualCount); return _res; } static PyObject *File_FSFlushFork(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; SInt16 forkRefNum; if (!PyArg_ParseTuple(_args, "h", &forkRefNum)) return NULL; _err = FSFlushFork(forkRefNum); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSCloseFork(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; SInt16 forkRefNum; if (!PyArg_ParseTuple(_args, "h", &forkRefNum)) return NULL; _err = FSCloseFork(forkRefNum); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *File_FSGetDataForkName(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; HFSUniStr255 dataForkName; if (!PyArg_ParseTuple(_args, "")) return NULL; _err = FSGetDataForkName(&dataForkName); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildHFSUniStr255, &dataForkName); return _res; } static PyObject *File_FSGetResourceForkName(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; HFSUniStr255 resourceForkName; if (!PyArg_ParseTuple(_args, "")) return NULL; _err = FSGetResourceForkName(&resourceForkName); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", PyMac_BuildHFSUniStr255, &resourceForkName); return _res; } static PyObject *File_FSPathMakeRef(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSStatus _err; UInt8 * path; FSRef ref; Boolean isDirectory; if (!PyArg_ParseTuple(_args, "s", &path)) return NULL; _err = FSPathMakeRef(path, &ref, &isDirectory); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&b", PyMac_BuildFSRef, &ref, isDirectory); return _res; } #if TARGET_API_MAC_OSX static PyObject *File_FNNotify(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSStatus _err; FSRef ref; FNMessage message; OptionBits flags; if (!PyArg_ParseTuple(_args, "O&ll", PyMac_GetFSRef, &ref, &message, &flags)) return NULL; _err = FNNotify(&ref, message, flags); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } #endif #if TARGET_API_MAC_OSX static PyObject *File_FNNotifyByPath(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSStatus _err; UInt8 * path; FNMessage message; OptionBits flags; if (!PyArg_ParseTuple(_args, "sll", &path, &message, &flags)) return NULL; _err = FNNotifyByPath(path, message, flags); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } #endif #if TARGET_API_MAC_OSX static PyObject *File_FNNotifyAll(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSStatus _err; FNMessage message; OptionBits flags; if (!PyArg_ParseTuple(_args, "ll", &message, &flags)) return NULL; _err = FNNotifyAll(message, flags); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } #endif static PyObject *File_FSRefMakePath(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSStatus _err; FSRef ref; #define MAXPATHNAME 1024 UInt8 path[MAXPATHNAME]; UInt32 maxPathSize = MAXPATHNAME; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetFSRef, &ref)) return NULL; _err = FSRefMakePath(&ref, path, maxPathSize); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("s", path); return _res; } static PyMethodDef File_methods[] = { {"UnmountVol", (PyCFunction)File_UnmountVol, 1, PyDoc_STR("(Str63 volName, short vRefNum) -> None")}, {"FlushVol", (PyCFunction)File_FlushVol, 1, PyDoc_STR("(Str63 volName, short vRefNum) -> None")}, {"HSetVol", (PyCFunction)File_HSetVol, 1, PyDoc_STR("(Str63 volName, short vRefNum, long dirID) -> None")}, {"FSClose", (PyCFunction)File_FSClose, 1, PyDoc_STR("(short refNum) -> None")}, {"Allocate", (PyCFunction)File_Allocate, 1, PyDoc_STR("(short refNum) -> (long count)")}, {"GetEOF", (PyCFunction)File_GetEOF, 1, PyDoc_STR("(short refNum) -> (long logEOF)")}, {"SetEOF", (PyCFunction)File_SetEOF, 1, PyDoc_STR("(short refNum, long logEOF) -> None")}, {"GetFPos", (PyCFunction)File_GetFPos, 1, PyDoc_STR("(short refNum) -> (long filePos)")}, {"SetFPos", (PyCFunction)File_SetFPos, 1, PyDoc_STR("(short refNum, short posMode, long posOff) -> None")}, {"GetVRefNum", (PyCFunction)File_GetVRefNum, 1, PyDoc_STR("(short fileRefNum) -> (short vRefNum)")}, {"HGetVol", (PyCFunction)File_HGetVol, 1, PyDoc_STR("(StringPtr volName) -> (short vRefNum, long dirID)")}, {"HOpen", (PyCFunction)File_HOpen, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SInt8 permission) -> (short refNum)")}, {"HOpenDF", (PyCFunction)File_HOpenDF, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SInt8 permission) -> (short refNum)")}, {"HOpenRF", (PyCFunction)File_HOpenRF, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SInt8 permission) -> (short refNum)")}, {"AllocContig", (PyCFunction)File_AllocContig, 1, PyDoc_STR("(short refNum) -> (long count)")}, {"HCreate", (PyCFunction)File_HCreate, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, OSType creator, OSType fileType) -> None")}, {"DirCreate", (PyCFunction)File_DirCreate, 1, PyDoc_STR("(short vRefNum, long parentDirID, Str255 directoryName) -> (long createdDirID)")}, {"HDelete", (PyCFunction)File_HDelete, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")}, {"HGetFInfo", (PyCFunction)File_HGetFInfo, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> (FInfo fndrInfo)")}, {"HSetFInfo", (PyCFunction)File_HSetFInfo, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, FInfo fndrInfo) -> None")}, {"HSetFLock", (PyCFunction)File_HSetFLock, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")}, {"HRstFLock", (PyCFunction)File_HRstFLock, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")}, {"HRename", (PyCFunction)File_HRename, 1, PyDoc_STR("(short vRefNum, long dirID, Str255 oldName, Str255 newName) -> None")}, {"CatMove", (PyCFunction)File_CatMove, 1, 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)")}, {"FSpOpenDF", (PyCFunction)File_FSpOpenDF, 1, PyDoc_STR("(FSSpec spec, SInt8 permission) -> (short refNum)")}, {"FSpOpenRF", (PyCFunction)File_FSpOpenRF, 1, PyDoc_STR("(FSSpec spec, SInt8 permission) -> (short refNum)")}, {"FSpCreate", (PyCFunction)File_FSpCreate, 1, PyDoc_STR("(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None")}, {"FSpDirCreate", (PyCFunction)File_FSpDirCreate, 1, PyDoc_STR("(FSSpec spec, ScriptCode scriptTag) -> (long createdDirID)")}, {"FSpDelete", (PyCFunction)File_FSpDelete, 1, PyDoc_STR("(FSSpec spec) -> None")}, {"FSpGetFInfo", (PyCFunction)File_FSpGetFInfo, 1, PyDoc_STR("(FSSpec spec) -> (FInfo fndrInfo)")}, {"FSpSetFInfo", (PyCFunction)File_FSpSetFInfo, 1, PyDoc_STR("(FSSpec spec, FInfo fndrInfo) -> None")}, {"FSpSetFLock", (PyCFunction)File_FSpSetFLock, 1, PyDoc_STR("(FSSpec spec) -> None")}, {"FSpRstFLock", (PyCFunction)File_FSpRstFLock, 1, PyDoc_STR("(FSSpec spec) -> None")}, {"FSpRename", (PyCFunction)File_FSpRename, 1, PyDoc_STR("(FSSpec spec, Str255 newName) -> None")}, {"FSpCatMove", (PyCFunction)File_FSpCatMove, 1, PyDoc_STR("(FSSpec source, FSSpec dest) -> None")}, {"FSpExchangeFiles", (PyCFunction)File_FSpExchangeFiles, 1, PyDoc_STR("(FSSpec source, FSSpec dest) -> None")}, {"FSpMakeFSRef", (PyCFunction)File_FSpMakeFSRef, 1, PyDoc_STR("(FSSpec source) -> (FSRef newRef)")}, {"FSMakeFSRefUnicode", (PyCFunction)File_FSMakeFSRefUnicode, 1, PyDoc_STR("(FSRef parentRef, Buffer nameLength, TextEncoding textEncodingHint) -> (FSRef newRef)")}, {"FSCompareFSRefs", (PyCFunction)File_FSCompareFSRefs, 1, PyDoc_STR("(FSRef ref1, FSRef ref2) -> None")}, {"FSDeleteObject", (PyCFunction)File_FSDeleteObject, 1, PyDoc_STR("(FSRef ref) -> None")}, {"FSMoveObject", (PyCFunction)File_FSMoveObject, 1, PyDoc_STR("(FSRef ref, FSRef destDirectory) -> (FSRef newRef)")}, {"FSExchangeObjects", (PyCFunction)File_FSExchangeObjects, 1, PyDoc_STR("(FSRef ref, FSRef destRef) -> None")}, {"FSRenameUnicode", (PyCFunction)File_FSRenameUnicode, 1, PyDoc_STR("(FSRef ref, Buffer nameLength, TextEncoding textEncodingHint) -> (FSRef newRef)")}, {"FSCreateFork", (PyCFunction)File_FSCreateFork, 1, PyDoc_STR("(FSRef ref, Buffer forkNameLength) -> None")}, {"FSDeleteFork", (PyCFunction)File_FSDeleteFork, 1, PyDoc_STR("(FSRef ref, Buffer forkNameLength) -> None")}, {"FSOpenFork", (PyCFunction)File_FSOpenFork, 1, PyDoc_STR("(FSRef ref, Buffer forkNameLength, SInt8 permissions) -> (SInt16 forkRefNum)")}, {"FSGetForkPosition", (PyCFunction)File_FSGetForkPosition, 1, PyDoc_STR("(SInt16 forkRefNum) -> (SInt64 position)")}, {"FSSetForkPosition", (PyCFunction)File_FSSetForkPosition, 1, PyDoc_STR("(SInt16 forkRefNum, UInt16 positionMode, SInt64 positionOffset) -> None")}, {"FSGetForkSize", (PyCFunction)File_FSGetForkSize, 1, PyDoc_STR("(SInt16 forkRefNum) -> (SInt64 forkSize)")}, {"FSSetForkSize", (PyCFunction)File_FSSetForkSize, 1, PyDoc_STR("(SInt16 forkRefNum, UInt16 positionMode, SInt64 positionOffset) -> None")}, {"FSAllocateFork", (PyCFunction)File_FSAllocateFork, 1, PyDoc_STR("(SInt16 forkRefNum, FSAllocationFlags flags, UInt16 positionMode, SInt64 positionOffset, UInt64 requestCount) -> (UInt64 actualCount)")}, {"FSFlushFork", (PyCFunction)File_FSFlushFork, 1, PyDoc_STR("(SInt16 forkRefNum) -> None")}, {"FSCloseFork", (PyCFunction)File_FSCloseFork, 1, PyDoc_STR("(SInt16 forkRefNum) -> None")}, {"FSGetDataForkName", (PyCFunction)File_FSGetDataForkName, 1, PyDoc_STR("() -> (HFSUniStr255 dataForkName)")}, {"FSGetResourceForkName", (PyCFunction)File_FSGetResourceForkName, 1, PyDoc_STR("() -> (HFSUniStr255 resourceForkName)")}, {"FSPathMakeRef", (PyCFunction)File_FSPathMakeRef, 1, PyDoc_STR("(UInt8 * path) -> (FSRef ref, Boolean isDirectory)")}, #if TARGET_API_MAC_OSX {"FNNotify", (PyCFunction)File_FNNotify, 1, PyDoc_STR("(FSRef ref, FNMessage message, OptionBits flags) -> None")}, #endif #if TARGET_API_MAC_OSX {"FNNotifyByPath", (PyCFunction)File_FNNotifyByPath, 1, PyDoc_STR("(UInt8 * path, FNMessage message, OptionBits flags) -> None")}, #endif #if TARGET_API_MAC_OSX {"FNNotifyAll", (PyCFunction)File_FNNotifyAll, 1, PyDoc_STR("(FNMessage message, OptionBits flags) -> None")}, #endif {"FSRefMakePath", (PyCFunction)File_FSRefMakePath, 1, PyDoc_STR("(FSRef) -> string")}, {NULL, NULL, 0} }; void init_File(void) { PyObject *m; PyObject *d; m = Py_InitModule("_File", File_methods); d = PyModule_GetDict(m); File_Error = PyMac_GetOSErrException(); if (File_Error == NULL || PyDict_SetItemString(d, "Error", File_Error) != 0) return; } /* ======================== End module _File ======================== */