Show ThreadedFile.h syntax highlighted
/****************************************************************************************
ThreadedFile.h $Revision: 1.2 $
<http://rentzsch.com/redshedthreads>
Copyright © 2000-2002 Red Shed Software. All rights reserved.
by Jonathan 'Wolf' Rentzsch (jon at redshed dot net)
************************************************************************************/
#ifndef _ThreadedFile_
#define _ThreadedFile_
#include "RedShedThreads.h"
/**************************
*
* Types
*
**************************/
#pragma mark (Types)
#pragma options align=mac68k
typedef struct {
RedShedThread *thread;
long a5;
} TPBHeader;
typedef struct {
TPBHeader header;
union {
HFileInfo hFileInfo;
DirInfo dirInfo;
};
} TCInfoPBRec, *TCInfoPBPtr;
typedef struct {
TPBHeader header;
union {
IOParam ioParam;
FileParam fileParam;
VolumeParam volumeParam;
CntrlParam cntrlParam;
SlotDevParam slotDevParam;
MultiDevParam multiDevParam;
};
} TParamBlockRec, *TParmBlkPtr;
typedef struct {
TPBHeader header;
union {
HIOParam ioParam;
HFileParam fileParam;
HVolumeParam volumeParam;
AccessParam accessParam;
ObjParam objParam;
CopyParam copyParam;
WDParam wdParam;
FIDParam fidParam;
CSParam csParam;
ForeignPrivParam foreignPrivParam;
};
} THParamBlockRec, *THParmBlkPtr;
typedef struct {
TPBHeader header;
QElemPtr qLink; /*queue link in header*/
short qType; /*type byte for safety check*/
short ioTrap; /*FS: the Trap*/
Ptr ioCmdAddr; /*FS: address to dispatch to*/
IOCompletionUPP ioCompletion; /*completion routine addr (0 for synch calls)*/
volatile OSErr ioResult; /*result code*/
StringPtr ioNamePtr; /*ptr to Vol:FileName string*/
short ioVRefNum; /*volume refnum (DrvNum for Eject and MountVol)*/
short ioDTRefNum; /* desktop refnum */
short ioIndex;
long ioTagInfo;
Ptr ioDTBuffer;
long ioDTReqCount;
long ioDTActCount;
SInt8 ioFiller1;
SInt8 ioIconType;
short ioFiller2;
long ioDirID;
OSType ioFileCreator;
OSType ioFileType;
long ioFiller3;
long ioDTLgLen;
long ioDTPyLen;
short ioFiller4[14];
long ioAPPLParID;
} TDTPBRec, *TDTPBPtr;
#pragma options align=reset
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
/**************************
*
* Functions
*
**************************/
#pragma mark -
#pragma mark (Functions)
extern
OSErr
TPBGetCatInfo(
RedShedThread *thread,
TCInfoPBPtr paramBlock );
extern
OSErr
TPBSetCatInfo(
RedShedThread *thread,
TCInfoPBPtr paramBlock );
extern
OSErr
TGetDirCount(
RedShedThread *thread,
short vRefNum,
long dirID,
ConstStr255Param name,
UInt16 *count );
extern
OSErr
TPBHDelete(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TPBGetEOF(
RedShedThread *thread,
TParmBlkPtr paramBlock );
extern
OSErr
TPBSetEOF(
RedShedThread *thread,
TParmBlkPtr paramBlock );
extern
OSErr
TPBSetFPos(
RedShedThread *thread,
TParmBlkPtr paramBlock );
extern
OSErr
TPBRead(
RedShedThread *thread,
TParmBlkPtr paramBlock );
extern
OSErr
TPBWrite(
RedShedThread *thread,
TParmBlkPtr paramBlock );
extern
OSErr
TCopyFork(
RedShedThread *thread,
short fromRefNum,
short toRefNum,
void *buffer, // Can be nil.
UInt32 bufferSize ); // Can be zero.
// Ignore this function. TCopyFork is faster.
extern
OSErr
TCopyFork2(
RedShedThread *thread,
short fromRefNum,
short toRefNum,
void *buffer, // Can be nil.
UInt32 bufferSize ); // Can be zero.
extern
OSErr
TPBHOpenDF(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TPBHOpenDF(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TPBHOpenRF(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TPBHCreate(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TPBDirCreate(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TFileCopy(
RedShedThread *thread,
short fromVRefNum,
long fromDirID,
ConstStr255Param fromName,
short fromDeskRefNum,
short toVRefNum,
long toDirID,
short toDeskRefNum,
void *buffer, // Can be nil.
UInt32 bufferSize ); // Can be zero.
extern
OSErr
TFolderCopy( // Doesn't copy contents.
RedShedThread *thread,
short fromVRefNum,
long fromDirID,
ConstStr255Param fromName,
short fromDeskRefNum,
short toVRefNum,
long *toDirID,
short toDeskRefNum );
extern
OSErr
TClose(
RedShedThread *thread,
short *refNum );
extern
OSErr
TPBHSetFLock(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TPBHSetFLock(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TPBHRstFLock(
RedShedThread *thread,
THParmBlkPtr paramBlock );
extern
OSErr
TPBDTGetComment(
RedShedThread *thread,
TDTPBPtr paramBlock );
extern
OSErr
TPBDTSetComment(
RedShedThread *thread,
TDTPBPtr paramBlock );
extern
OSErr
THCreate(
RedShedThread *thread,
short vRefNum,
long dirID,
ConstStr255Param fileName,
OSType creator,
OSType fileType );
// TDTOpen must be called at SystemTask time. Read the comments in the source file
// for the gory details.
extern
OSErr
TDTOpen(
RedShedThread *thread, // ->
ConstStr255Param volName, // -> Can be nil if you set vRefNum.
short vRefNum, // -> Can be zero if you set volName.
short *dtRefNum, // <-
Boolean *newDTDatabase ); // <- Can be nil.
extern
OSErr
TGetCatInfoNoName(
RedShedThread *thread, // ->
short vRefNum, // ->
long dirID, // ->
ConstStr255Param name, // -> Can be nil.
TCInfoPBPtr paramBlock ); // <-
extern
OSErr
TFSpGetCatInfoNoName(
RedShedThread *thread, // ->
const FSSpec *spec, // ->
TCInfoPBPtr paramBlock ); // <-
extern
OSErr
TFSpSetCatInfo(
RedShedThread *thread, // ->
const FSSpec *spec, // ->
TCInfoPBPtr paramBlock ); // ->
extern
OSErr
TFSpOpenDF(
RedShedThread *thread, // ->
const FSSpec *spec, // ->
SInt8 permission, // ->
short *refNum ); // <-
extern
OSErr
TFSpOpenRF(
RedShedThread *thread, // ->
const FSSpec *spec, // ->
SInt8 permission, // ->
short *refNum ); // <-
extern
OSErr
TGetEOF(
RedShedThread *thread, // ->
short refNum, // ->
long *logEOF ); // <-
extern
OSErr
TSetEOF(
RedShedThread *thread, // ->
short refNum, // ->
long logEOF ); // ->
extern
OSErr
TSetFPos(
RedShedThread *thread, // ->
short refNum, // ->
short posMode, // ->
long posOff ); // ->
extern
OSErr
TFSRead(
RedShedThread *thread, // ->
short refNum, // ->
long *count, // <> in: bytes to read. out: bytes read.
void *buffPtr ); // <-
extern
OSErr
TFSWrite(
RedShedThread *thread, // ->
short refNum, // ->
long *count, // <> in: bytes to write. out: bytes written.
const void *buffPtr ); // ->
extern
OSErr
TFSpSetFLock(
RedShedThread *thread, // ->
const FSSpec *spec ); // ->
extern
OSErr
TFSpGetComment(
RedShedThread *thread, // ->
const FSSpec *spec, // ->
short dtRefNum, // -> Desktop database refnum.
StringPtr comment ); // <- Must be a Str255.
extern
OSErr
TFSpSetComment(
RedShedThread *thread, // ->
const FSSpec *spec, // ->
short dtRefNum, // -> Desktop database refnum.
ConstStr255Param comment ); // ->
#ifdef __cplusplus
}
#endif
#endif // _ThreadedFile_
See more files for this project here