BuildCubeE/BootableMPW/Interfaces/CIncludes/FileTransfers.h

209 lines
5.9 KiB
C

/************************************************************
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 <Packages.h>
#endif
#ifndef __CTBUTILITIES__
#include <CTBUtilities.h>
#endif
#ifndef __CONNECTIONS__
#include <Connections.h>
#endif
#ifndef __FILES__
#include <Files.h>
#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