home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / PInterfaces / FileTransfers.p < prev    next >
Encoding:
Text File  |  1994-11-11  |  11.7 KB  |  330 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        FileTransfers.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT FileTransfers;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __FILETRANSFERS__}
  27. {$SETC __FILETRANSFERS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC FileTransfersIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __WINDOWS__}
  35. {$I Windows.p}
  36. {$ENDC}
  37. {    Memory.p                                                    }
  38. {        Types.p                                                    }
  39. {            ConditionalMacros.p                                    }
  40. {        MixedMode.p                                                }
  41. {    Quickdraw.p                                                    }
  42. {        QuickdrawText.p                                            }
  43. {    Events.p                                                    }
  44. {        OSUtils.p                                                }
  45. {    Controls.p                                                    }
  46. {        Menus.p                                                    }
  47.  
  48. {$IFC UNDEFINED __CTBUTILITIES__}
  49. {$I CTBUtilities.p}
  50. {$ENDC}
  51. {    Dialogs.p                                                    }
  52. {        Errors.p                                                }
  53. {        TextEdit.p                                                }
  54. {    StandardFile.p                                                }
  55. {        Files.p                                                    }
  56. {    AppleTalk.p                                                    }
  57.  
  58. {$IFC UNDEFINED __CONNECTIONS__}
  59. {$I Connections.p}
  60. {$ENDC}
  61.  
  62. {$IFC UNDEFINED __TERMINALS__}
  63. {$I Terminals.p}
  64. {$ENDC}
  65.  
  66. {$PUSH}
  67. {$ALIGN MAC68K}
  68. {$LibExport+}
  69.  
  70. CONST
  71. { current file transfer manager version    }
  72.     curFTVersion                = 2;
  73. { FTErr    }
  74.     ftGenericError                = -1;
  75.     ftNoErr                        = 0;
  76.     ftRejected                    = 1;
  77.     ftFailed                    = 2;
  78.     ftTimeOut                    = 3;
  79.     ftTooManyRetry                = 4;
  80.     ftNotEnoughDSpace            = 5;
  81.     ftRemoteCancel                = 6;
  82.     ftWrongFormat                = 7;
  83.     ftNoTools                    = 8;
  84.     ftUserCancel                = 9;
  85.     ftNotSupported                = 10;
  86.  
  87.     
  88. TYPE
  89.     FTErr = OSErr;
  90.  
  91.  
  92. CONST
  93.     ftIsFTMode                    = 1 * (2**(0));
  94.     ftNoMenus                    = 1 * (2**(1));
  95.     ftQuiet                        = 1 * (2**(2));
  96.     ftConfigChanged                = 1 * (2**(4));
  97.     ftSucc                        = 1 * (2**(7));
  98.  
  99.     
  100. TYPE
  101.     FTFlags = LONGINT;
  102.  
  103.  
  104. CONST
  105.     ftSameCircuit                = 1 * (2**(0));
  106.     ftSendDisable                = 1 * (2**(1));
  107.     ftReceiveDisable            = 1 * (2**(2));
  108.     ftTextOnly                    = 1 * (2**(3));
  109.     ftNoStdFile                    = 1 * (2**(4));
  110.     ftMultipleFileSend            = 1 * (2**(5));
  111.  
  112.     
  113. TYPE
  114.     FTAttributes = INTEGER;
  115.  
  116.  
  117. CONST
  118.     ftReceiving                    = 0;
  119.     ftTransmitting                = 1;
  120.  
  121.     
  122. TYPE
  123.     FTDirection = INTEGER;
  124.  
  125. {    application routines type definitions }
  126.     FTPtr = ^FTRecord;
  127.     FTHandle = ^FTPtr;
  128.  
  129.     FileTransferDefProcPtr = ProcPtr;  { FUNCTION FileTransferDef(hTerm: TermHandle; msg: INTEGER; p1: LONGINT; p2: LONGINT; p3: LONGINT): LONGINT; }
  130.     FileTransferReadProcPtr = ProcPtr;  { FUNCTION FileTransferRead(VAR count: LONGINT; pData: Ptr; refCon: LONGINT; fileMsg: INTEGER): OSErr; }
  131.     FileTransferWriteProcPtr = ProcPtr;  { FUNCTION FileTransferWrite(VAR count: LONGINT; pData: Ptr; refCon: LONGINT; fileMsg: INTEGER): OSErr; }
  132.     FileTransferSendProcPtr = ProcPtr;  { FUNCTION FileTransferSend(thePtr: Ptr; theSize: LONGINT; refCon: LONGINT; channel: CMChannel; flag: CMFlags): Size; }
  133.     FileTransferReceiveProcPtr = ProcPtr;  { FUNCTION FileTransferReceive(thePtr: Ptr; theSize: LONGINT; refCon: LONGINT; channel: CMChannel; VAR flag: CMFlags): Size; }
  134.     FileTransferEnvironsProcPtr = ProcPtr;  { FUNCTION FileTransferEnvirons(refCon: LONGINT; VAR theEnvirons: ConnEnvironRec): OSErr; }
  135.     FileTransferNotificationProcPtr = ProcPtr;  { PROCEDURE FileTransferNotification(hFT: FTHandle; pFSSpec: FSSpecPtr); }
  136.     FileTransferChooseIdleProcPtr = ProcPtr;  { PROCEDURE FileTransferChooseIdle; }
  137.     FileTransferDefUPP = UniversalProcPtr;
  138.     FileTransferReadUPP = UniversalProcPtr;
  139.     FileTransferWriteUPP = UniversalProcPtr;
  140.     FileTransferSendUPP = UniversalProcPtr;
  141.     FileTransferReceiveUPP = UniversalProcPtr;
  142.     FileTransferEnvironsUPP = UniversalProcPtr;
  143.     FileTransferNotificationUPP = UniversalProcPtr;
  144.     FileTransferChooseIdleUPP = UniversalProcPtr;
  145.  
  146.     FTRecord = PACKED RECORD
  147.         procID:                    INTEGER;
  148.         flags:                    FTFlags;
  149.         errCode:                FTErr;
  150.         refCon:                    LONGINT;
  151.         userData:                LONGINT;
  152.         defProc:                FileTransferDefUPP;
  153.         config:                    Ptr;
  154.         oldConfig:                Ptr;
  155.         environsProc:            FileTransferEnvironsUPP;
  156.         reserved1:                LONGINT;
  157.         reserved2:                LONGINT;
  158.         ftPrivate:                Ptr;
  159.         sendProc:                FileTransferSendUPP;
  160.         recvProc:                FileTransferReceiveUPP;
  161.         writeProc:                FileTransferWriteUPP;
  162.         readProc:                FileTransferReadUPP;
  163.         owner:                    WindowPtr;
  164.         direction:                FTDirection;
  165.         theReply:                SFReply;
  166.         writePtr:                LONGINT;
  167.         readPtr:                LONGINT;
  168.         theBuf:                    ^CHAR;
  169.         bufSize:                LONGINT;
  170.         autoRec:                Str255;
  171.         attributes:                FTAttributes;
  172.     END;
  173.  
  174. CONST
  175. { FTReadProc messages }
  176.     ftReadOpenFile                = 0;                            { count = forkFlags, buffer = pblock from PBGetFInfo }
  177.     ftReadDataFork                = 1;
  178.     ftReadRsrcFork                = 2;
  179.     ftReadAbort                    = 3;
  180.     ftReadComplete                = 4;
  181.     ftReadSetFPos                = 6;                            { count = forkFlags, buffer = pBlock same as PBSetFPos }
  182.     ftReadGetFPos                = 7;                            { count = forkFlags, buffer = pBlock same as PBGetFPos }
  183. { FTWriteProc messages }
  184.     ftWriteOpenFile                = 0;                            { count = forkFlags, buffer = pblock from PBGetFInfo }
  185.     ftWriteDataFork                = 1;
  186.     ftWriteRsrcFork                = 2;
  187.     ftWriteAbort                = 3;
  188.     ftWriteComplete                = 4;
  189.     ftWriteFileInfo                = 5;
  190.     ftWriteSetFPos                = 6;                            { count = forkFlags, buffer = pBlock same as PBSetFPos }
  191.     ftWriteGetFPos                = 7;                            { count = forkFlags, buffer = pBlock same as PBGetFPos }
  192. {    fork flags }
  193.     ftOpenDataFork                = 1;
  194.     ftOpenRsrcFork                = 2;
  195.  
  196.     uppFileTransferDefProcInfo = $0000FEF0; { FUNCTION (4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  197.     uppFileTransferReadProcInfo = $00002FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 2 byte param): 2 byte result; }
  198.     uppFileTransferWriteProcInfo = $00002FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 2 byte param): 2 byte result; }
  199.     uppFileTransferSendProcInfo = $0000AFF0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 2 byte param, 2 byte param): 4 byte result; }
  200.     uppFileTransferReceiveProcInfo = $0000EFF0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 2 byte param, 4 byte param): 4 byte result; }
  201.     uppFileTransferEnvironsProcInfo = $000003E0; { FUNCTION (4 byte param, 4 byte param): 2 byte result; }
  202.     uppFileTransferNotificationProcInfo = $000003C0; { PROCEDURE (4 byte param, 4 byte param); }
  203.     uppFileTransferChooseIdleProcInfo = $00000000; { PROCEDURE ; }
  204.  
  205. FUNCTION NewFileTransferDefProc(userRoutine: FileTransferDefProcPtr): FileTransferDefUPP;
  206.     {$IFC NOT GENERATINGCFM }
  207.     INLINE $2E9F;
  208.     {$ENDC}
  209.  
  210. FUNCTION NewFileTransferReadProc(userRoutine: FileTransferReadProcPtr): FileTransferReadUPP;
  211.     {$IFC NOT GENERATINGCFM }
  212.     INLINE $2E9F;
  213.     {$ENDC}
  214.  
  215. FUNCTION NewFileTransferWriteProc(userRoutine: FileTransferWriteProcPtr): FileTransferWriteUPP;
  216.     {$IFC NOT GENERATINGCFM }
  217.     INLINE $2E9F;
  218.     {$ENDC}
  219.  
  220. FUNCTION NewFileTransferSendProc(userRoutine: FileTransferSendProcPtr): FileTransferSendUPP;
  221.     {$IFC NOT GENERATINGCFM }
  222.     INLINE $2E9F;
  223.     {$ENDC}
  224.  
  225. FUNCTION NewFileTransferReceiveProc(userRoutine: FileTransferReceiveProcPtr): FileTransferReceiveUPP;
  226.     {$IFC NOT GENERATINGCFM }
  227.     INLINE $2E9F;
  228.     {$ENDC}
  229.  
  230. FUNCTION NewFileTransferEnvironsProc(userRoutine: FileTransferEnvironsProcPtr): FileTransferEnvironsUPP;
  231.     {$IFC NOT GENERATINGCFM }
  232.     INLINE $2E9F;
  233.     {$ENDC}
  234.  
  235. FUNCTION NewFileTransferNotificationProc(userRoutine: FileTransferNotificationProcPtr): FileTransferNotificationUPP;
  236.     {$IFC NOT GENERATINGCFM }
  237.     INLINE $2E9F;
  238.     {$ENDC}
  239.  
  240. FUNCTION NewFileTransferChooseIdleProc(userRoutine: FileTransferChooseIdleProcPtr): FileTransferChooseIdleUPP;
  241.     {$IFC NOT GENERATINGCFM }
  242.     INLINE $2E9F;
  243.     {$ENDC}
  244.  
  245. FUNCTION CallFileTransferDefProc(hTerm: TermHandle; msg: INTEGER; p1: LONGINT; p2: LONGINT; p3: LONGINT; userRoutine: FileTransferDefUPP): LONGINT;
  246.     {$IFC NOT GENERATINGCFM}
  247.     INLINE $205F, $4E90;
  248.     {$ENDC}
  249.  
  250. FUNCTION CallFileTransferReadProc(VAR count: LONGINT; pData: Ptr; refCon: LONGINT; fileMsg: INTEGER; userRoutine: FileTransferReadUPP): OSErr;
  251.     {$IFC NOT GENERATINGCFM}
  252.     INLINE $205F, $4E90;
  253.     {$ENDC}
  254.  
  255. FUNCTION CallFileTransferWriteProc(VAR count: LONGINT; pData: Ptr; refCon: LONGINT; fileMsg: INTEGER; userRoutine: FileTransferWriteUPP): OSErr;
  256.     {$IFC NOT GENERATINGCFM}
  257.     INLINE $205F, $4E90;
  258.     {$ENDC}
  259.  
  260. FUNCTION CallFileTransferSendProc(thePtr: Ptr; theSize: LONGINT; refCon: LONGINT; channel: CMChannel; flag: CMFlags; userRoutine: FileTransferSendUPP): Size;
  261.     {$IFC NOT GENERATINGCFM}
  262.     INLINE $205F, $4E90;
  263.     {$ENDC}
  264.  
  265. FUNCTION CallFileTransferReceiveProc(thePtr: Ptr; theSize: LONGINT; refCon: LONGINT; channel: CMChannel; VAR flag: CMFlags; userRoutine: FileTransferReceiveUPP): Size;
  266.     {$IFC NOT GENERATINGCFM}
  267.     INLINE $205F, $4E90;
  268.     {$ENDC}
  269.  
  270. FUNCTION CallFileTransferEnvironsProc(refCon: LONGINT; VAR theEnvirons: ConnEnvironRec; userRoutine: FileTransferEnvironsUPP): OSErr;
  271.     {$IFC NOT GENERATINGCFM}
  272.     INLINE $205F, $4E90;
  273.     {$ENDC}
  274.  
  275. PROCEDURE CallFileTransferNotificationProc(hFT: FTHandle; pFSSpec: FSSpecPtr; userRoutine: FileTransferNotificationUPP);
  276.     {$IFC NOT GENERATINGCFM}
  277.     INLINE $205F, $4E90;
  278.     {$ENDC}
  279.  
  280. PROCEDURE CallFileTransferChooseIdleProc(userRoutine: FileTransferChooseIdleUPP);
  281.     {$IFC NOT GENERATINGCFM}
  282.     INLINE $205F, $4E90;
  283.     {$ENDC}
  284.  
  285. FUNCTION InitFT: FTErr;
  286. FUNCTION FTGetVersion(hFT: FTHandle): Handle;
  287. FUNCTION FTGetFTVersion: INTEGER;
  288. FUNCTION FTNew(procID: INTEGER; flags: FTFlags; sendProc: FileTransferSendUPP; recvProc: FileTransferReceiveUPP; readProc: FileTransferReadUPP; writeProc: FileTransferWriteUPP; environsProc: FileTransferEnvironsUPP; owner: WindowPtr; refCon: LONGINT; userData: LONGINT): FTHandle;
  289. PROCEDURE FTDispose(hFT: FTHandle);
  290. FUNCTION FTStart(hFT: FTHandle; direction: FTDirection; {CONST}VAR fileInfo: SFReply): FTErr;
  291. FUNCTION FTAbort(hFT: FTHandle): FTErr;
  292. FUNCTION FTSend(hFT: FTHandle; numFiles: INTEGER; pFSSpec: FSSpecArrayPtr; notifyProc: FileTransferNotificationUPP): FTErr;
  293. FUNCTION FTReceive(hFT: FTHandle; pFSSpec: FSSpecPtr; notifyProc: FileTransferNotificationUPP): FTErr;
  294. PROCEDURE FTExec(hFT: FTHandle);
  295. PROCEDURE FTActivate(hFT: FTHandle; activate: BOOLEAN);
  296. PROCEDURE FTResume(hFT: FTHandle; resume: BOOLEAN);
  297. FUNCTION FTMenu(hFT: FTHandle; menuID: INTEGER; item: INTEGER): BOOLEAN;
  298. FUNCTION FTChoose(VAR hFT: FTHandle; where: Point; idleProc: FileTransferChooseIdleUPP): INTEGER;
  299. PROCEDURE FTEvent(hFT: FTHandle; {CONST}VAR theEvent: EventRecord);
  300. FUNCTION FTValidate(hFT: FTHandle): BOOLEAN;
  301. PROCEDURE FTDefault(VAR theConfig: Ptr; procID: INTEGER; allocate: BOOLEAN);
  302. FUNCTION FTSetupPreflight(procID: INTEGER; VAR magicCookie: LONGINT): Handle;
  303. PROCEDURE FTSetupSetup(procID: INTEGER; theConfig: UNIV Ptr; count: INTEGER; theDialog: DialogPtr; VAR magicCookie: LONGINT);
  304. FUNCTION FTSetupFilter(procID: INTEGER; theConfig: UNIV Ptr; count: INTEGER; theDialog: DialogPtr; VAR theEvent: EventRecord; VAR theItem: INTEGER; VAR magicCookie: LONGINT): BOOLEAN;
  305. PROCEDURE FTSetupItem(procID: INTEGER; theConfig: UNIV Ptr; count: INTEGER; theDialog: DialogPtr; VAR theItem: INTEGER; VAR magicCookie: LONGINT);
  306. PROCEDURE FTSetupXCleanup(procID: INTEGER; theConfig: UNIV Ptr; count: INTEGER; theDialog: DialogPtr; OKed: BOOLEAN; VAR magicCookie: LONGINT);
  307. PROCEDURE FTSetupPostflight(procID: INTEGER);
  308. FUNCTION FTGetConfig(hFT: FTHandle): Ptr;
  309. FUNCTION FTSetConfig(hFT: FTHandle; thePtr: UNIV Ptr): INTEGER;
  310. FUNCTION FTIntlToEnglish(hFT: FTHandle; inputPtr: UNIV Ptr; VAR outputPtr: Ptr; language: INTEGER): OSErr;
  311. FUNCTION FTEnglishToIntl(hFT: FTHandle; inputPtr: UNIV Ptr; VAR outputPtr: Ptr; language: INTEGER): OSErr;
  312. PROCEDURE FTGetToolName(procID: INTEGER; VAR name: Str255);
  313. FUNCTION FTGetProcID(name: ConstStr255Param): INTEGER;
  314. PROCEDURE FTSetRefCon(hFT: FTHandle; refCon: LONGINT);
  315. FUNCTION FTGetRefCon(hFT: FTHandle): LONGINT;
  316. PROCEDURE FTSetUserData(hFT: FTHandle; userData: LONGINT);
  317. FUNCTION FTGetUserData(hFT: FTHandle): LONGINT;
  318. PROCEDURE FTGetErrorString(hFT: FTHandle; id: INTEGER; VAR errMsg: Str255);
  319.  
  320. {$ALIGN RESET}
  321. {$POP}
  322.  
  323. {$SETC UsingIncludes := FileTransfersIncludes}
  324.  
  325. {$ENDC} {__FILETRANSFERS__}
  326.  
  327. {$IFC NOT UsingIncludes}
  328.  END.
  329. {$ENDC}
  330.