mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			1447 lines
		
	
	
	
		
			39 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			1447 lines
		
	
	
	
		
			39 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | 
 | ||
|  | /* ========================== 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 <Files.h>
 | ||
|  | #else
 | ||
|  | #include <Carbon/Carbon.h>
 | ||
|  | #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; | ||
|  | 	char* 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; | ||
|  | } | ||
|  | 
 | ||
|  | 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; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *File_FNNotifyByPath(PyObject *_self, PyObject *_args) | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	OSStatus _err; | ||
|  | 	char* 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; | ||
|  | } | ||
|  | 
 | ||
|  | 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; | ||
|  | } | ||
|  | 
 | ||
|  | 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("(char* path) -> (FSRef ref, Boolean isDirectory)")}, | ||
|  | 	{"FNNotify", (PyCFunction)File_FNNotify, 1, | ||
|  | 	 PyDoc_STR("(FSRef ref, FNMessage message, OptionBits flags) -> None")}, | ||
|  | 	{"FNNotifyByPath", (PyCFunction)File_FNNotifyByPath, 1, | ||
|  | 	 PyDoc_STR("(char* path, FNMessage message, OptionBits flags) -> None")}, | ||
|  | 	{"FNNotifyAll", (PyCFunction)File_FNNotifyAll, 1, | ||
|  | 	 PyDoc_STR("(FNMessage message, OptionBits flags) -> None")}, | ||
|  | 	{"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 ======================== */ | ||
|  | 
 |