Mac OS 9
FileTransfers.h
Go to the documentation of this file.
1 
19 #ifndef __FILETRANSFERS__
20 #define __FILETRANSFERS__
21 
22 #ifndef __CONDITIONALMACROS__
23 #include <ConditionalMacros.h>
24 #endif
25 
26 #ifndef __STANDARDFILE__
27 #include <StandardFile.h>
28 #endif
29 
30 #ifndef __CTBUTILITIES__
31 #include <CTBUtilities.h>
32 #endif
33 
34 #ifndef __CONNECTIONS__
35 #include <Connections.h>
36 #endif
37 
38 #ifndef __FILES__
39 #include <Files.h>
40 #endif
41 
42 #ifndef __TERMINALS__
43 #include <Terminals.h>
44 #endif
45 
46 #if PRAGMA_ONCE
47 #pragma once
48 #endif
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
54 #if PRAGMA_IMPORT
55 #pragma import on
56 #endif
57 
58 #if PRAGMA_STRUCT_ALIGN
59 #pragma options align = mac68k
60 #elif PRAGMA_STRUCT_PACKPUSH
61 #pragma pack(push, 2)
62 #elif PRAGMA_STRUCT_PACK
63 #pragma pack(2)
64 #endif
65 
66 #if CALL_NOT_IN_CARBON
67 enum {
68  curFTVersion = 2 /* current file transfer manager version*/
69 };
70 
71 enum {
72  /* FTErr */
73  ftGenericError = -1,
74  ftNoErr = 0,
75  ftRejected = 1,
76  ftFailed = 2,
77  ftTimeOut = 3,
78  ftTooManyRetry = 4,
79  ftNotEnoughDSpace = 5,
80  ftRemoteCancel = 6,
81  ftWrongFormat = 7,
82  ftNoTools = 8,
83  ftUserCancel = 9,
84  ftNotSupported = 10
85 };
86 
87 typedef OSErr FTErr;
88 enum {
89  ftIsFTMode = 1 << 0,
90  ftNoMenus = 1 << 1,
91  ftQuiet = 1 << 2,
92  ftConfigChanged = 1 << 4,
93  ftSucc = 1 << 7
94 };
95 
96 typedef unsigned long FTFlags;
97 enum {
98  ftSameCircuit = 1 << 0,
99  ftSendDisable = 1 << 1,
100  ftReceiveDisable = 1 << 2,
101  ftTextOnly = 1 << 3,
102  ftNoStdFile = 1 << 4,
103  ftMultipleFileSend = 1 << 5
104 };
105 
106 typedef unsigned short FTAttributes;
107 enum {
108  ftReceiving = 0,
109  ftTransmitting = 1,
110  ftFullDuplex = 2 /* (16) added ftFullDuplex bit.*/
111 };
112 
113 typedef unsigned short FTDirection;
114 typedef CALLBACK_API(long, FileTransferDefProcPtr)(TermHandle hTerm, short msg,
115  long p1, long p2, long p3);
116 /* application routines type definitions */
117 typedef struct FTRecord FTRecord;
118 typedef FTRecord *FTPtr;
119 typedef FTPtr *FTHandle;
120 typedef CALLBACK_API(OSErr, FileTransferReadProcPtr)(unsigned long *count,
121  Ptr pData, long refCon,
122  short fileMsg);
123 typedef CALLBACK_API(OSErr, FileTransferWriteProcPtr)(unsigned long *count,
124  Ptr pData, long refCon,
125  short fileMsg);
126 typedef CALLBACK_API(Size, FileTransferSendProcPtr)(Ptr thePtr, long theSize,
127  long refCon,
128  CMChannel channel,
129  CMFlags flag);
130 typedef CALLBACK_API(Size, FileTransferReceiveProcPtr)(Ptr thePtr, long theSize,
131  long refCon,
132  CMChannel channel,
133  CMFlags *flag);
134 typedef CALLBACK_API(OSErr,
135  FileTransferEnvironsProcPtr)(long refCon,
137 typedef CALLBACK_API(void,
138  FileTransferNotificationProcPtr)(FTHandle hFT,
139  const FSSpec *pFSSpec);
140 typedef CALLBACK_API(void, FileTransferChooseIdleProcPtr)(void);
141 typedef STACK_UPP_TYPE(FileTransferDefProcPtr) FileTransferDefUPP;
142 typedef STACK_UPP_TYPE(FileTransferReadProcPtr) FileTransferReadUPP;
143 typedef STACK_UPP_TYPE(FileTransferWriteProcPtr) FileTransferWriteUPP;
144 typedef STACK_UPP_TYPE(FileTransferSendProcPtr) FileTransferSendUPP;
145 typedef STACK_UPP_TYPE(FileTransferReceiveProcPtr) FileTransferReceiveUPP;
146 typedef STACK_UPP_TYPE(FileTransferEnvironsProcPtr) FileTransferEnvironsUPP;
147 typedef STACK_UPP_TYPE(FileTransferNotificationProcPtr)
148  FileTransferNotificationUPP;
149 typedef STACK_UPP_TYPE(FileTransferChooseIdleProcPtr) FileTransferChooseIdleUPP;
150 struct FTRecord {
151  short procID;
152  FTFlags flags;
153  FTErr errCode;
154  long refCon;
155  long userData;
156  FileTransferDefUPP defProc;
157  Ptr config;
158  Ptr oldConfig;
159  FileTransferEnvironsUPP environsProc;
160  long reserved1;
161  long reserved2;
162  Ptr ftPrivate;
163  FileTransferSendUPP sendProc;
164  FileTransferReceiveUPP recvProc;
165  FileTransferWriteUPP writeProc;
166  FileTransferReadUPP readProc;
167  WindowRef owner;
168  FTDirection direction;
169  SFReply theReply;
170  long writePtr;
171  long readPtr;
172  Ptr theBuf;
173  long bufSize;
174  Str255 autoRec;
175  FTAttributes attributes;
176 };
177 
178 typedef unsigned short FTCompletionKind;
179 enum {
180  /* FTReadProc messages */
181  ftReadOpenFile = 0, /* count = forkFlags, buffer = pblock from PBGetFInfo */
182  ftReadDataFork = 1,
183  ftReadRsrcFork = 2,
184  ftReadAbort = 3,
185  ftReadComplete = 4,
186  ftReadSetFPos = 6, /* count = forkFlags, buffer = pBlock same as PBSetFPos */
187  ftReadGetFPos = 7 /* count = forkFlags, buffer = pBlock same as PBGetFPos */
188 };
189 
190 enum {
191  /* FTWriteProc messages */
192  ftWriteOpenFile = 0, /* count = forkFlags, buffer = pblock from PBGetFInfo */
193  ftWriteDataFork = 1,
194  ftWriteRsrcFork = 2,
195  ftWriteAbort = 3,
196  ftWriteComplete = 4,
197  ftWriteFileInfo = 5,
198  ftWriteSetFPos = 6, /* count = forkFlags, buffer = pBlock same as PBSetFPos */
199  ftWriteGetFPos = 7 /* count = forkFlags, buffer = pBlock same as PBGetFPos */
200 };
201 
202 enum {
203  /* fork flags */
204  ftOpenDataFork = 1,
205  ftOpenRsrcFork = 2
206 };
207 
208 #if CALL_NOT_IN_CARBON
217 FileTransferDefUPP
218 NewFileTransferDefUPP(FileTransferDefProcPtr userRoutine);
219 #if !OPAQUE_UPP_TYPES
220 enum {
221  uppFileTransferDefProcInfo = 0x0000FEF0
222 }; /* pascal 4_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
223 #ifdef __cplusplus
224 inline FileTransferDefUPP
225 NewFileTransferDefUPP(FileTransferDefProcPtr userRoutine) {
226  return (FileTransferDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
227  uppFileTransferDefProcInfo,
228  GetCurrentArchitecture());
229 }
230 #else
231 #define NewFileTransferDefUPP(userRoutine) \
232  (FileTransferDefUPP) \
233  NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferDefProcInfo, \
234  GetCurrentArchitecture())
235 #endif
236 #endif
237 
246 FileTransferReadUPP
247 NewFileTransferReadUPP(FileTransferReadProcPtr userRoutine);
248 #if !OPAQUE_UPP_TYPES
249 enum {
250  uppFileTransferReadProcInfo = 0x00002FE0
251 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
252 #ifdef __cplusplus
253 inline FileTransferReadUPP
254 NewFileTransferReadUPP(FileTransferReadProcPtr userRoutine) {
255  return (FileTransferReadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
256  uppFileTransferReadProcInfo,
257  GetCurrentArchitecture());
258 }
259 #else
260 #define NewFileTransferReadUPP(userRoutine) \
261  (FileTransferReadUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
262  uppFileTransferReadProcInfo, \
263  GetCurrentArchitecture())
264 #endif
265 #endif
266 
275 FileTransferWriteUPP
276 NewFileTransferWriteUPP(FileTransferWriteProcPtr userRoutine);
277 #if !OPAQUE_UPP_TYPES
278 enum {
279  uppFileTransferWriteProcInfo = 0x00002FE0
280 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
281 #ifdef __cplusplus
282 inline FileTransferWriteUPP
283 NewFileTransferWriteUPP(FileTransferWriteProcPtr userRoutine) {
284  return (FileTransferWriteUPP)NewRoutineDescriptor(
285  (ProcPtr)(userRoutine), uppFileTransferWriteProcInfo,
286  GetCurrentArchitecture());
287 }
288 #else
289 #define NewFileTransferWriteUPP(userRoutine) \
290  (FileTransferWriteUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
291  uppFileTransferWriteProcInfo, \
292  GetCurrentArchitecture())
293 #endif
294 #endif
295 
304 FileTransferSendUPP
305 NewFileTransferSendUPP(FileTransferSendProcPtr userRoutine);
306 #if !OPAQUE_UPP_TYPES
307 enum {
308  uppFileTransferSendProcInfo = 0x0000AFF0
309 }; /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 2_bytes) */
310 #ifdef __cplusplus
311 inline FileTransferSendUPP
312 NewFileTransferSendUPP(FileTransferSendProcPtr userRoutine) {
313  return (FileTransferSendUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
314  uppFileTransferSendProcInfo,
315  GetCurrentArchitecture());
316 }
317 #else
318 #define NewFileTransferSendUPP(userRoutine) \
319  (FileTransferSendUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
320  uppFileTransferSendProcInfo, \
321  GetCurrentArchitecture())
322 #endif
323 #endif
324 
333 FileTransferReceiveUPP
334 NewFileTransferReceiveUPP(FileTransferReceiveProcPtr userRoutine);
335 #if !OPAQUE_UPP_TYPES
336 enum {
337  uppFileTransferReceiveProcInfo = 0x0000EFF0
338 }; /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes) */
339 #ifdef __cplusplus
340 inline FileTransferReceiveUPP
341 NewFileTransferReceiveUPP(FileTransferReceiveProcPtr userRoutine) {
342  return (FileTransferReceiveUPP)NewRoutineDescriptor(
343  (ProcPtr)(userRoutine), uppFileTransferReceiveProcInfo,
344  GetCurrentArchitecture());
345 }
346 #else
347 #define NewFileTransferReceiveUPP(userRoutine) \
348  (FileTransferReceiveUPP) NewRoutineDescriptor( \
349  (ProcPtr)(userRoutine), uppFileTransferReceiveProcInfo, \
350  GetCurrentArchitecture())
351 #endif
352 #endif
353 
362 FileTransferEnvironsUPP
363 NewFileTransferEnvironsUPP(FileTransferEnvironsProcPtr userRoutine);
364 #if !OPAQUE_UPP_TYPES
365 enum {
366  uppFileTransferEnvironsProcInfo = 0x000003E0
367 }; /* pascal 2_bytes Func(4_bytes, 4_bytes) */
368 #ifdef __cplusplus
369 inline FileTransferEnvironsUPP
370 NewFileTransferEnvironsUPP(FileTransferEnvironsProcPtr userRoutine) {
371  return (FileTransferEnvironsUPP)NewRoutineDescriptor(
372  (ProcPtr)(userRoutine), uppFileTransferEnvironsProcInfo,
373  GetCurrentArchitecture());
374 }
375 #else
376 #define NewFileTransferEnvironsUPP(userRoutine) \
377  (FileTransferEnvironsUPP) NewRoutineDescriptor( \
378  (ProcPtr)(userRoutine), uppFileTransferEnvironsProcInfo, \
379  GetCurrentArchitecture())
380 #endif
381 #endif
382 
391 FileTransferNotificationUPP
392 NewFileTransferNotificationUPP(FileTransferNotificationProcPtr userRoutine);
393 #if !OPAQUE_UPP_TYPES
394 enum {
395  uppFileTransferNotificationProcInfo = 0x000003C0
396 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */
397 #ifdef __cplusplus
398 inline FileTransferNotificationUPP
399 NewFileTransferNotificationUPP(FileTransferNotificationProcPtr userRoutine) {
400  return (FileTransferNotificationUPP)NewRoutineDescriptor(
401  (ProcPtr)(userRoutine), uppFileTransferNotificationProcInfo,
402  GetCurrentArchitecture());
403 }
404 #else
405 #define NewFileTransferNotificationUPP(userRoutine) \
406  (FileTransferNotificationUPP) NewRoutineDescriptor( \
407  (ProcPtr)(userRoutine), uppFileTransferNotificationProcInfo, \
408  GetCurrentArchitecture())
409 #endif
410 #endif
411 
420 FileTransferChooseIdleUPP
421 NewFileTransferChooseIdleUPP(FileTransferChooseIdleProcPtr userRoutine);
422 #if !OPAQUE_UPP_TYPES
423 enum {
424  uppFileTransferChooseIdleProcInfo = 0x00000000
425 }; /* pascal no_return_value Func() */
426 #ifdef __cplusplus
427 inline FileTransferChooseIdleUPP
428 NewFileTransferChooseIdleUPP(FileTransferChooseIdleProcPtr userRoutine) {
429  return (FileTransferChooseIdleUPP)NewRoutineDescriptor(
430  (ProcPtr)(userRoutine), uppFileTransferChooseIdleProcInfo,
431  GetCurrentArchitecture());
432 }
433 #else
434 #define NewFileTransferChooseIdleUPP(userRoutine) \
435  (FileTransferChooseIdleUPP) NewRoutineDescriptor( \
436  (ProcPtr)(userRoutine), uppFileTransferChooseIdleProcInfo, \
437  GetCurrentArchitecture())
438 #endif
439 #endif
440 
449 void
450 DisposeFileTransferDefUPP(FileTransferDefUPP userUPP);
451 #if !OPAQUE_UPP_TYPES
452 #ifdef __cplusplus
453 inline void DisposeFileTransferDefUPP(FileTransferDefUPP userUPP) {
454  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
455 }
456 #else
457 #define DisposeFileTransferDefUPP(userUPP) DisposeRoutineDescriptor(userUPP)
458 #endif
459 #endif
460 
469 void
470 DisposeFileTransferReadUPP(FileTransferReadUPP userUPP);
471 #if !OPAQUE_UPP_TYPES
472 #ifdef __cplusplus
473 inline void DisposeFileTransferReadUPP(FileTransferReadUPP userUPP) {
474  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
475 }
476 #else
477 #define DisposeFileTransferReadUPP(userUPP) DisposeRoutineDescriptor(userUPP)
478 #endif
479 #endif
480 
489 void
490 DisposeFileTransferWriteUPP(FileTransferWriteUPP userUPP);
491 #if !OPAQUE_UPP_TYPES
492 #ifdef __cplusplus
493 inline void DisposeFileTransferWriteUPP(FileTransferWriteUPP userUPP) {
494  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
495 }
496 #else
497 #define DisposeFileTransferWriteUPP(userUPP) DisposeRoutineDescriptor(userUPP)
498 #endif
499 #endif
500 
509 void
510 DisposeFileTransferSendUPP(FileTransferSendUPP userUPP);
511 #if !OPAQUE_UPP_TYPES
512 #ifdef __cplusplus
513 inline void DisposeFileTransferSendUPP(FileTransferSendUPP userUPP) {
514  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
515 }
516 #else
517 #define DisposeFileTransferSendUPP(userUPP) DisposeRoutineDescriptor(userUPP)
518 #endif
519 #endif
520 
529 void
530 DisposeFileTransferReceiveUPP(FileTransferReceiveUPP userUPP);
531 #if !OPAQUE_UPP_TYPES
532 #ifdef __cplusplus
533 inline void DisposeFileTransferReceiveUPP(FileTransferReceiveUPP userUPP) {
534  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
535 }
536 #else
537 #define DisposeFileTransferReceiveUPP(userUPP) DisposeRoutineDescriptor(userUPP)
538 #endif
539 #endif
540 
549 void
550 DisposeFileTransferEnvironsUPP(FileTransferEnvironsUPP userUPP);
551 #if !OPAQUE_UPP_TYPES
552 #ifdef __cplusplus
553 inline void DisposeFileTransferEnvironsUPP(FileTransferEnvironsUPP userUPP) {
554  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
555 }
556 #else
557 #define DisposeFileTransferEnvironsUPP(userUPP) \
558  DisposeRoutineDescriptor(userUPP)
559 #endif
560 #endif
561 
570 void
571 DisposeFileTransferNotificationUPP(FileTransferNotificationUPP userUPP);
572 #if !OPAQUE_UPP_TYPES
573 #ifdef __cplusplus
574 inline void
575 DisposeFileTransferNotificationUPP(FileTransferNotificationUPP userUPP) {
576  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
577 }
578 #else
579 #define DisposeFileTransferNotificationUPP(userUPP) \
580  DisposeRoutineDescriptor(userUPP)
581 #endif
582 #endif
583 
592 void
593 DisposeFileTransferChooseIdleUPP(FileTransferChooseIdleUPP userUPP);
594 #if !OPAQUE_UPP_TYPES
595 #ifdef __cplusplus
596 inline void
597 DisposeFileTransferChooseIdleUPP(FileTransferChooseIdleUPP userUPP) {
598  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
599 }
600 #else
601 #define DisposeFileTransferChooseIdleUPP(userUPP) \
602  DisposeRoutineDescriptor(userUPP)
603 #endif
604 #endif
605 
614 long
615 InvokeFileTransferDefUPP(TermHandle hTerm, short msg, long p1, long p2, long p3,
616  FileTransferDefUPP userUPP);
617 #if !OPAQUE_UPP_TYPES
618 #ifdef __cplusplus
619 inline long InvokeFileTransferDefUPP(TermHandle hTerm, short msg, long p1,
620  long p2, long p3,
621  FileTransferDefUPP userUPP) {
622  return (long)CALL_FIVE_PARAMETER_UPP(userUPP, uppFileTransferDefProcInfo,
623  hTerm, msg, p1, p2, p3);
624 }
625 #else
626 #define InvokeFileTransferDefUPP(hTerm, msg, p1, p2, p3, userUPP) \
627  (long)CALL_FIVE_PARAMETER_UPP((userUPP), uppFileTransferDefProcInfo, \
628  (hTerm), (msg), (p1), (p2), (p3))
629 #endif
630 #endif
631 
640 OSErr
641 InvokeFileTransferReadUPP(unsigned long *count, Ptr pData, long refCon,
642  short fileMsg, FileTransferReadUPP userUPP);
643 #if !OPAQUE_UPP_TYPES
644 #ifdef __cplusplus
645 inline OSErr InvokeFileTransferReadUPP(unsigned long *count, Ptr pData,
646  long refCon, short fileMsg,
647  FileTransferReadUPP userUPP) {
648  return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppFileTransferReadProcInfo,
649  count, pData, refCon, fileMsg);
650 }
651 #else
652 #define InvokeFileTransferReadUPP(count, pData, refCon, fileMsg, userUPP) \
653  (OSErr) CALL_FOUR_PARAMETER_UPP((userUPP), uppFileTransferReadProcInfo, \
654  (count), (pData), (refCon), (fileMsg))
655 #endif
656 #endif
657 
666 OSErr
667 InvokeFileTransferWriteUPP(unsigned long *count, Ptr pData, long refCon,
668  short fileMsg, FileTransferWriteUPP userUPP);
669 #if !OPAQUE_UPP_TYPES
670 #ifdef __cplusplus
671 inline OSErr InvokeFileTransferWriteUPP(unsigned long *count, Ptr pData,
672  long refCon, short fileMsg,
673  FileTransferWriteUPP userUPP) {
674  return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppFileTransferWriteProcInfo,
675  count, pData, refCon, fileMsg);
676 }
677 #else
678 #define InvokeFileTransferWriteUPP(count, pData, refCon, fileMsg, userUPP) \
679  (OSErr) CALL_FOUR_PARAMETER_UPP((userUPP), uppFileTransferWriteProcInfo, \
680  (count), (pData), (refCon), (fileMsg))
681 #endif
682 #endif
683 
692 Size
693 InvokeFileTransferSendUPP(Ptr thePtr, long theSize, long refCon,
694  CMChannel channel, CMFlags flag,
695  FileTransferSendUPP userUPP);
696 #if !OPAQUE_UPP_TYPES
697 #ifdef __cplusplus
698 inline Size InvokeFileTransferSendUPP(Ptr thePtr, long theSize, long refCon,
699  CMChannel channel, CMFlags flag,
700  FileTransferSendUPP userUPP) {
701  return (Size)CALL_FIVE_PARAMETER_UPP(userUPP, uppFileTransferSendProcInfo,
702  thePtr, theSize, refCon, channel, flag);
703 }
704 #else
705 #define InvokeFileTransferSendUPP(thePtr, theSize, refCon, channel, flag, \
706  userUPP) \
707  (Size) CALL_FIVE_PARAMETER_UPP((userUPP), uppFileTransferSendProcInfo, \
708  (thePtr), (theSize), (refCon), (channel), \
709  (flag))
710 #endif
711 #endif
712 
721 Size
722 InvokeFileTransferReceiveUPP(Ptr thePtr, long theSize, long refCon,
723  CMChannel channel, CMFlags *flag,
724  FileTransferReceiveUPP userUPP);
725 #if !OPAQUE_UPP_TYPES
726 #ifdef __cplusplus
727 inline Size InvokeFileTransferReceiveUPP(Ptr thePtr, long theSize, long refCon,
728  CMChannel channel, CMFlags *flag,
729  FileTransferReceiveUPP userUPP) {
730  return (Size)CALL_FIVE_PARAMETER_UPP(userUPP, uppFileTransferReceiveProcInfo,
731  thePtr, theSize, refCon, channel, flag);
732 }
733 #else
734 #define InvokeFileTransferReceiveUPP(thePtr, theSize, refCon, channel, flag, \
735  userUPP) \
736  (Size) CALL_FIVE_PARAMETER_UPP((userUPP), uppFileTransferReceiveProcInfo, \
737  (thePtr), (theSize), (refCon), (channel), \
738  (flag))
739 #endif
740 #endif
741 
750 OSErr
752  FileTransferEnvironsUPP userUPP);
753 #if !OPAQUE_UPP_TYPES
754 #ifdef __cplusplus
755 inline OSErr InvokeFileTransferEnvironsUPP(long refCon,
757  FileTransferEnvironsUPP userUPP) {
758  return (OSErr)CALL_TWO_PARAMETER_UPP(userUPP, uppFileTransferEnvironsProcInfo,
759  refCon, theEnvirons);
760 }
761 #else
762 #define InvokeFileTransferEnvironsUPP(refCon, theEnvirons, userUPP) \
763  (OSErr) CALL_TWO_PARAMETER_UPP((userUPP), uppFileTransferEnvironsProcInfo, \
764  (refCon), (theEnvirons))
765 #endif
766 #endif
767 
776 void
777 InvokeFileTransferNotificationUPP(FTHandle hFT, const FSSpec *pFSSpec,
778  FileTransferNotificationUPP userUPP);
779 #if !OPAQUE_UPP_TYPES
780 #ifdef __cplusplus
781 inline void
782 InvokeFileTransferNotificationUPP(FTHandle hFT, const FSSpec *pFSSpec,
783  FileTransferNotificationUPP userUPP) {
784  CALL_TWO_PARAMETER_UPP(userUPP, uppFileTransferNotificationProcInfo, hFT,
785  pFSSpec);
786 }
787 #else
788 #define InvokeFileTransferNotificationUPP(hFT, pFSSpec, userUPP) \
789  CALL_TWO_PARAMETER_UPP((userUPP), uppFileTransferNotificationProcInfo, \
790  (hFT), (pFSSpec))
791 #endif
792 #endif
793 
802 void
803 InvokeFileTransferChooseIdleUPP(FileTransferChooseIdleUPP userUPP);
804 #if !OPAQUE_UPP_TYPES
805 #ifdef __cplusplus
806 inline void InvokeFileTransferChooseIdleUPP(FileTransferChooseIdleUPP userUPP) {
807  CALL_ZERO_PARAMETER_UPP(userUPP, uppFileTransferChooseIdleProcInfo);
808 }
809 #else
810 #define InvokeFileTransferChooseIdleUPP(userUPP) \
811  CALL_ZERO_PARAMETER_UPP((userUPP), uppFileTransferChooseIdleProcInfo)
812 #endif
813 #endif
814 
815 #endif /* CALL_NOT_IN_CARBON */
816 
817 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
818 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
819 #define NewFileTransferDefProc(userRoutine) NewFileTransferDefUPP(userRoutine)
820 #define NewFileTransferReadProc(userRoutine) NewFileTransferReadUPP(userRoutine)
821 #define NewFileTransferWriteProc(userRoutine) \
822  NewFileTransferWriteUPP(userRoutine)
823 #define NewFileTransferSendProc(userRoutine) NewFileTransferSendUPP(userRoutine)
824 #define NewFileTransferReceiveProc(userRoutine) \
825  NewFileTransferReceiveUPP(userRoutine)
826 #define NewFileTransferEnvironsProc(userRoutine) \
827  NewFileTransferEnvironsUPP(userRoutine)
828 #define NewFileTransferNotificationProc(userRoutine) \
829  NewFileTransferNotificationUPP(userRoutine)
830 #define NewFileTransferChooseIdleProc(userRoutine) \
831  NewFileTransferChooseIdleUPP(userRoutine)
832 #define CallFileTransferDefProc(userRoutine, hTerm, msg, p1, p2, p3) \
833  InvokeFileTransferDefUPP(hTerm, msg, p1, p2, p3, userRoutine)
834 #define CallFileTransferReadProc(userRoutine, count, pData, refCon, fileMsg) \
835  InvokeFileTransferReadUPP(count, pData, refCon, fileMsg, userRoutine)
836 #define CallFileTransferWriteProc(userRoutine, count, pData, refCon, fileMsg) \
837  InvokeFileTransferWriteUPP(count, pData, refCon, fileMsg, userRoutine)
838 #define CallFileTransferSendProc(userRoutine, thePtr, theSize, refCon, \
839  channel, flag) \
840  InvokeFileTransferSendUPP(thePtr, theSize, refCon, channel, flag, userRoutine)
841 #define CallFileTransferReceiveProc(userRoutine, thePtr, theSize, refCon, \
842  channel, flag) \
843  InvokeFileTransferReceiveUPP(thePtr, theSize, refCon, channel, flag, \
844  userRoutine)
845 #define CallFileTransferEnvironsProc(userRoutine, refCon, theEnvirons) \
846  InvokeFileTransferEnvironsUPP(refCon, theEnvirons, userRoutine)
847 #define CallFileTransferNotificationProc(userRoutine, hFT, pFSSpec) \
848  InvokeFileTransferNotificationUPP(hFT, pFSSpec, userRoutine)
849 #define CallFileTransferChooseIdleProc(userRoutine) \
850  InvokeFileTransferChooseIdleUPP(userRoutine)
851 #endif /* CALL_NOT_IN_CARBON */
852 
853 #if CALL_NOT_IN_CARBON
862 FTErr
863 InitFT(void);
864 
873 Handle
875 
884 short
886 
895 FTHandle
896 FTNew(short procID, FTFlags flags, FileTransferSendUPP sendProc,
897  FileTransferReceiveUPP recvProc, FileTransferReadUPP readProc,
898  FileTransferWriteUPP writeProc, FileTransferEnvironsUPP environsProc,
899  WindowRef owner, long refCon, long userData);
900 
909 void
911 
920 FTErr
921 FTStart(FTHandle hFT, FTDirection direction, const SFReply *fileInfo);
922 
931 FTErr
933 
942 FTErr
943 FTSend(FTHandle hFT, short numFiles, FSSpecArrayPtr pFSSpec,
944  FileTransferNotificationUPP notifyProc);
945 
954 FTErr
955 FTReceive(FTHandle hFT, FSSpecPtr pFSSpec,
956  FileTransferNotificationUPP notifyProc);
957 
966 void
968 
977 void
978 FTActivate(FTHandle hFT, Boolean activate);
979 
988 void
989 FTResume(FTHandle hFT, Boolean resume);
990 
999 Boolean
1000 FTMenu(FTHandle hFT, short menuID, short item);
1001 
1010 short
1011 FTChoose(FTHandle *hFT, Point where, FileTransferChooseIdleUPP idleProc);
1012 
1021 void
1023 
1032 Boolean
1034 
1043 void
1044 FTDefault(Ptr *theConfig, short procID, Boolean allocate);
1045 
1054 Handle
1055 FTSetupPreflight(short procID, long *magicCookie);
1056 
1065 void
1066 FTSetupSetup(short procID, const void *theConfig, short count,
1067  DialogRef theDialog, long *magicCookie);
1068 
1077 Boolean
1078 FTSetupFilter(short procID, const void *theConfig, short count,
1079  DialogRef theDialog, EventRecord *theEvent, short *theItem,
1080  long *magicCookie);
1081 
1090 void
1091 FTSetupItem(short procID, const void *theConfig, short count,
1092  DialogRef theDialog, short *theItem, long *magicCookie);
1093 
1102 void
1103 FTSetupXCleanup(short procID, const void *theConfig, short count,
1104  DialogRef theDialog, Boolean OKed, long *magicCookie);
1105 
1114 void
1115 FTSetupPostflight(short procID);
1116 
1125 Ptr
1127 
1136 short
1137 FTSetConfig(FTHandle hFT, const void *thePtr);
1138 
1147 FTErr
1148 FTIntlToEnglish(FTHandle hFT, const void *inputPtr, Ptr *outputPtr,
1149  short language);
1150 
1159 FTErr
1160 FTEnglishToIntl(FTHandle hFT, const void *inputPtr, Ptr *outputPtr,
1161  short language);
1162 
1171 void
1172 FTGetToolName(short procID, Str255 name);
1173 
1182 short
1183 FTGetProcID(ConstStr255Param name);
1184 
1193 void
1194 FTSetRefCon(FTHandle hFT, long refCon);
1195 
1204 long
1206 
1215 void
1216 FTSetUserData(FTHandle hFT, long userData);
1217 
1226 long
1228 
1237 void
1238 FTGetErrorString(FTHandle hFT, short id, Str255 errMsg);
1239 
1251 FTErr
1252 FTSendAsync(FTHandle hFT, short numFiles, FSSpecArrayPtr pFSSpec,
1253  FileTransferNotificationUPP notifyProc);
1254 
1263 FTErr
1264 FTReceiveAsync(FTHandle hFT, FSSpecPtr pFSSpec,
1265  FileTransferNotificationUPP notifyProc);
1266 
1275 FTErr
1276 FTCompletionAsync(FTHandle hFT, FTCompletionKind completionCall);
1277 
1278 #endif /* CALL_NOT_IN_CARBON */
1279 
1280 #endif /* CALL_NOT_IN_CARBON */
1281 
1282 #if PRAGMA_STRUCT_ALIGN
1283 #pragma options align = reset
1284 #elif PRAGMA_STRUCT_PACKPUSH
1285 #pragma pack(pop)
1286 #elif PRAGMA_STRUCT_PACK
1287 #pragma pack()
1288 #endif
1289 
1290 #ifdef PRAGMA_IMPORT_OFF
1291 #pragma import off
1292 #elif PRAGMA_IMPORT
1293 #pragma import reset
1294 #endif
1295 
1296 #ifdef __cplusplus
1297 }
1298 #endif
1299 
1300 #endif /* __FILETRANSFERS__ */
Communications Toolbox Utilities interfaces.
Set up for compiler independent conditionals.
Communications Toolbox Connection Manager Interfaces.
Boolean FTValidate(FTHandle hFT)
FileTransferDefUPP NewFileTransferDefUPP(FileTransferDefProcPtr userRoutine)
short FTSetConfig(FTHandle hFT, const void *thePtr)
Handle FTSetupPreflight(short procID, long *magicCookie)
void DisposeFileTransferReadUPP(FileTransferReadUPP userUPP)
void FTSetupPostflight(short procID)
void InvokeFileTransferNotificationUPP(FTHandle hFT, const FSSpec *pFSSpec, FileTransferNotificationUPP userUPP)
short FTChoose(FTHandle *hFT, Point where, FileTransferChooseIdleUPP idleProc)
long FTGetUserData(FTHandle hFT)
long InvokeFileTransferDefUPP(TermHandle hTerm, short msg, long p1, long p2, long p3, FileTransferDefUPP userUPP)
FileTransferChooseIdleUPP NewFileTransferChooseIdleUPP(FileTransferChooseIdleProcPtr userRoutine)
Boolean FTSetupFilter(short procID, const void *theConfig, short count, DialogRef theDialog, EventRecord *theEvent, short *theItem, long *magicCookie)
void DisposeFileTransferChooseIdleUPP(FileTransferChooseIdleUPP userUPP)
short FTGetProcID(ConstStr255Param name)
OSErr InvokeFileTransferEnvironsUPP(long refCon, ConnEnvironRec *theEnvirons, FileTransferEnvironsUPP userUPP)
void DisposeFileTransferEnvironsUPP(FileTransferEnvironsUPP userUPP)
void FTDispose(FTHandle hFT)
FileTransferReadUPP NewFileTransferReadUPP(FileTransferReadProcPtr userRoutine)
void DisposeFileTransferWriteUPP(FileTransferWriteUPP userUPP)
void FTGetToolName(short procID, Str255 name)
void FTSetRefCon(FTHandle hFT, long refCon)
Handle FTGetVersion(FTHandle hFT)
FileTransferEnvironsUPP NewFileTransferEnvironsUPP(FileTransferEnvironsProcPtr userRoutine)
void DisposeFileTransferSendUPP(FileTransferSendUPP userUPP)
void FTSetUserData(FTHandle hFT, long userData)
FTErr FTEnglishToIntl(FTHandle hFT, const void *inputPtr, Ptr *outputPtr, short language)
FTErr FTAbort(FTHandle hFT)
FTHandle FTNew(short procID, FTFlags flags, FileTransferSendUPP sendProc, FileTransferReceiveUPP recvProc, FileTransferReadUPP readProc, FileTransferWriteUPP writeProc, FileTransferEnvironsUPP environsProc, WindowRef owner, long refCon, long userData)
FTErr FTSendAsync(FTHandle hFT, short numFiles, FSSpecArrayPtr pFSSpec, FileTransferNotificationUPP notifyProc)
Size InvokeFileTransferSendUPP(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag, FileTransferSendUPP userUPP)
void FTSetupItem(short procID, const void *theConfig, short count, DialogRef theDialog, short *theItem, long *magicCookie)
void FTGetErrorString(FTHandle hFT, short id, Str255 errMsg)
Boolean FTMenu(FTHandle hFT, short menuID, short item)
FTErr InitFT(void)
OSErr InvokeFileTransferWriteUPP(unsigned long *count, Ptr pData, long refCon, short fileMsg, FileTransferWriteUPP userUPP)
void FTDefault(Ptr *theConfig, short procID, Boolean allocate)
void DisposeFileTransferDefUPP(FileTransferDefUPP userUPP)
FTErr FTCompletionAsync(FTHandle hFT, FTCompletionKind completionCall)
FileTransferReceiveUPP NewFileTransferReceiveUPP(FileTransferReceiveProcPtr userRoutine)
void FTResume(FTHandle hFT, Boolean resume)
void FTEvent(FTHandle hFT, const EventRecord *theEvent)
FTErr FTStart(FTHandle hFT, FTDirection direction, const SFReply *fileInfo)
void FTSetupSetup(short procID, const void *theConfig, short count, DialogRef theDialog, long *magicCookie)
void DisposeFileTransferNotificationUPP(FileTransferNotificationUPP userUPP)
short FTGetFTVersion(void)
void InvokeFileTransferChooseIdleUPP(FileTransferChooseIdleUPP userUPP)
OSErr InvokeFileTransferReadUPP(unsigned long *count, Ptr pData, long refCon, short fileMsg, FileTransferReadUPP userUPP)
void FTSetupXCleanup(short procID, const void *theConfig, short count, DialogRef theDialog, Boolean OKed, long *magicCookie)
FTErr FTReceiveAsync(FTHandle hFT, FSSpecPtr pFSSpec, FileTransferNotificationUPP notifyProc)
void FTActivate(FTHandle hFT, Boolean activate)
Ptr FTGetConfig(FTHandle hFT)
long FTGetRefCon(FTHandle hFT)
FTErr FTReceive(FTHandle hFT, FSSpecPtr pFSSpec, FileTransferNotificationUPP notifyProc)
FileTransferSendUPP NewFileTransferSendUPP(FileTransferSendProcPtr userRoutine)
void DisposeFileTransferReceiveUPP(FileTransferReceiveUPP userUPP)
FTErr FTIntlToEnglish(FTHandle hFT, const void *inputPtr, Ptr *outputPtr, short language)
void FTExec(FTHandle hFT)
FileTransferNotificationUPP NewFileTransferNotificationUPP(FileTransferNotificationProcPtr userRoutine)
Size InvokeFileTransferReceiveUPP(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags *flag, FileTransferReceiveUPP userUPP)
FileTransferWriteUPP NewFileTransferWriteUPP(FileTransferWriteProcPtr userRoutine)
FTErr FTSend(FTHandle hFT, short numFiles, FSSpecArrayPtr pFSSpec, FileTransferNotificationUPP notifyProc)
File Manager (MFS, HFS, and HFS+) Interfaces.
unsigned char Boolean
Definition: MacTypes.h:318
#define CALL_ZERO_PARAMETER_UPP(upp, procInfo)
Definition: MixedMode.h:790
void DisposeRoutineDescriptor(UniversalProcPtr theUPP)
#define STACK_UPP_TYPE(name)
Definition: MixedMode.h:734
UniversalProcPtr NewRoutineDescriptor(ProcPtr theProc, ProcInfoType theProcInfo, ISAType theISA)
Standard File package Interfaces.
Communications Toolbox Terminal tool Interfaces.
Definition: Connections.h:148
Definition: Events.h:224
Definition: FileTransfers.h:150
Definition: Quickdraw.h:1648
Definition: MacTypes.h:520
Definition: StandardFile.h:135
Definition: Terminals.h:160