/************************************************************ Created: Wednesday, September 11, 1991 at 6:06 PM FileTransfers.h C Interface to the Macintosh Libraries Copyright Apple Computer, Inc. 1988-1991 All rights reserved ************************************************************/ #ifndef __FILETRANSFERS__ #define __FILETRANSFERS__ #ifndef __PACKAGES__ #include #endif #ifndef __CTBUTILITIES__ #include #endif #ifndef __CONNECTIONS__ #include #endif #ifndef __FILES__ #include #endif enum { /* current file transfer manager version */ curFTVersion = 2, /* FTErr */ ftGenericError = -1, ftNoErr = 0, ftRejected = 1, ftFailed = 2, ftTimeOut = 3, ftTooManyRetry = 4, ftNotEnoughDSpace = 5, ftRemoteCancel = 6, ftWrongFormat = 7, ftNoTools = 8, ftUserCancel = 9, ftNotSupported = 10 }; typedef OSErr FTErr; enum {ftIsFTMode = 1 << 0,ftNoMenus = 1 << 1,ftQuiet = 1 << 2,ftConfigChanged = 1 << 4, ftSucc = 1 << 7}; typedef unsigned long FTFlags; enum {ftSameCircuit = 1 << 0,ftSendDisable = 1 << 1,ftReceiveDisable = 1 << 2, ftTextOnly = 1 << 3,ftNoStdFile = 1 << 4,ftMultipleFileSend = 1 << 5}; typedef unsigned short FTAttributes; enum {ftReceiving,ftTransmitting}; typedef unsigned short FTDirection; struct FTRecord { short procID; FTFlags flags; FTErr errCode; long refCon; long userData; ProcPtr defProc; Ptr config; Ptr oldConfig; ProcPtr environsProc; long reserved1; long reserved2; Ptr ftPrivate; ProcPtr sendProc; ProcPtr recvProc; ProcPtr writeProc; ProcPtr readProc; WindowPtr owner; FTDirection direction; SFReply theReply; long writePtr; long readPtr; char *theBuf; long bufSize; Str255 autoRec; FTAttributes attributes; }; typedef struct FTRecord FTRecord; typedef FTRecord *FTPtr, **FTHandle; enum { /* FTReadProc messages */ ftReadOpenFile = 0, /* count = forkFlags, buffer = pblock from PBGetFInfo */ ftReadDataFork = 1, ftReadRsrcFork = 2, ftReadAbort = 3, ftReadComplete = 4, ftReadSetFPos = 6, /* count = forkFlags, buffer = pBlock same as PBSetFPos */ ftReadGetFPos = 7, /* count = forkFlags, buffer = pBlock same as PBGetFPos */ /* FTWriteProc messages */ ftWriteOpenFile = 0, /* count = forkFlags, buffer = pblock from PBGetFInfo */ ftWriteDataFork = 1, ftWriteRsrcFork = 2, ftWriteAbort = 3, ftWriteComplete = 4, ftWriteFileInfo = 5, ftWriteSetFPos = 6, /* count = forkFlags, buffer = pBlock same as PBSetFPos */ ftWriteGetFPos = 7, /* count = forkFlags, buffer = pBlock same as PBGetFPos */ /* fork flags */ ftOpenDataFork = 1, ftOpenRsrcFork = 2 }; /* application routines type definitions */ typedef pascal OSErr (*FileTransferReadProcPtr) (unsigned long *count, Ptr pData, long refCon, short fileMsg); typedef pascal OSErr (*FileTransferWriteProcPtr) (unsigned long *count, Ptr pData, long refCon, short fileMsg); typedef pascal Size (*FileTransferSendProcPtr) (Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag); typedef pascal Size (*FileTransferReceiveProcPtr) (Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags *flag); typedef pascal OSErr (*FileTransferEnvironsProcPtr) (long refCon, ConnEnvironRec *theEnvirons); typedef pascal void (*FileTransferNotificationProcPtr) (FTHandle hFT, FSSpecPtr pFSSpec); typedef pascal void (*FileTransferChooseIdleProcPtr) (void); #ifdef __cplusplus extern "C" { #endif pascal FTErr InitFT(void); pascal Handle FTGetVersion(FTHandle hFT); pascal short FTGetFTVersion(void); pascal FTHandle FTNew(short procID,FTFlags flags,FileTransferSendProcPtr sendProc, FileTransferReceiveProcPtr recvProc,FileTransferReadProcPtr readProc,FileTransferWriteProcPtr writeProc, FileTransferEnvironsProcPtr environsProc,WindowPtr owner,long refCon,long userData); pascal void FTDispose(FTHandle hFT); pascal FTErr FTStart(FTHandle hFT,FTDirection direction,const SFReply *fileInfo); pascal FTErr FTAbort(FTHandle hFT); pascal FTErr FTSend(FTHandle hFT,short numFiles,FSSpecArrayPtr pFSSpec, FileTransferNotificationProcPtr notifyProc); pascal FTErr FTReceive(FTHandle hFT,FSSpecPtr pFSSpec,FileTransferNotificationProcPtr notifyProc); pascal void FTExec(FTHandle hFT); pascal void FTActivate(FTHandle hFT,Boolean activate); pascal void FTResume(FTHandle hFT,Boolean resume); pascal Boolean FTMenu(FTHandle hFT,short menuID,short item); pascal short FTChoose(FTHandle *hFT,Point where,FileTransferChooseIdleProcPtr idleProc); pascal void FTEvent(FTHandle hFT,const EventRecord *theEvent); pascal Boolean FTValidate(FTHandle hFT); pascal void FTDefault(Ptr *theConfig,short procID,Boolean allocate); pascal Handle FTSetupPreflight(short procID,long *magicCookie); pascal void FTSetupSetup(short procID,const void *theConfig,short count, DialogPtr theDialog,long *magicCookie); pascal Boolean FTSetupFilter(short procID,const void *theConfig,short count, DialogPtr theDialog,EventRecord *theEvent,short *theItem,long *magicCookie); pascal void FTSetupItem(short procID,const void *theConfig,short count, DialogPtr theDialog,short *theItem,long *magicCookie); pascal void FTSetupXCleanup(short procID,const void *theConfig,short count, DialogPtr theDialog,Boolean OKed,long *magicCookie); pascal void FTSetupPostflight(short procID); pascal Ptr FTGetConfig(FTHandle hFT); pascal short FTSetConfig(FTHandle hFT,const void *thePtr); pascal OSErr FTIntlToEnglish(FTHandle hFT,const void *inputPtr,Ptr *outputPtr, short language); pascal OSErr FTEnglishToIntl(FTHandle hFT,const void *inputPtr,Ptr *outputPtr, short language); pascal void FTGetToolName(short procID,Str255 name); pascal short FTGetProcID(ConstStr255Param name); pascal void FTSetRefCon(FTHandle hFT,long refCon); pascal long FTGetRefCon(FTHandle hFT); pascal void FTSetUserData(FTHandle hFT,long userData); pascal long FTGetUserData(FTHandle hFT); pascal void FTGetErrorString(FTHandle hFT,short id,Str255 errMsg); #ifdef __cplusplus } #endif #endif