<> <> <> <> <> DIRECTORY Atom USING [PropList], BasicTime USING [GMT, nullGMT], FTP, IO USING [STREAM], PupName USING [Code], PupStream USING [CloseReason], Rope USING [ROPE]; FTPInternal: CEDAR DEFINITIONS = BEGIN OPEN FTP; <> maxStringLength: CARDINAL = 100; <> Handle: TYPE = REF Object; Object: TYPE = RECORD [ byteStream: IO.STREAM _ NIL, pList: ARRAY LocalOrRemote OF PList, clientData: REF ANY _ NIL, buffer: REF TEXT _ NIL]; FilenameType: TYPE = {alto, tenex}; PList: TYPE = REF PListObject; PListObject: TYPE = RECORD [ date: ARRAY DateProperty OF BasicTime.GMT _ ALL[BasicTime.nullGMT], enumerated: ARRAY EnumeratedProperty OF EnumPropValue _ ALL[nullEnumPropValue], number: ARRAY NumberProperty OF INT _ ALL[0], text: ARRAY TextProperty OF ROPE _ ALL[NIL], userDefined: Atom.PropList _ NIL, desiredProps: PropertySet _ ALL[FALSE], desiredUserDefinedProps: LIST OF ATOM _ NIL]; <> GetCommand: PROCEDURE [h: Handle] RETURNS [mark: Mark, code: ReplyCode]; <> GetText: PROCEDURE [h: Handle, gobbleEOC: BOOLEAN _ FALSE] RETURNS [text: ROPE]; <> GetPList: PROCEDURE [h: Handle, gobbleEOC: BOOLEAN _ FALSE, endOfPropertiesOK: BOOLEAN _ FALSE] RETURNS [pList: PList]; <> GetYesNo: PROCEDURE [h: Handle, gobbleEOC: BOOLEAN _ FALSE, resumable: BOOLEAN _ FALSE] RETURNS [ok: BOOLEAN]; <> GetEOC: PROCEDURE [h: Handle]; <> PutCommand: PROCEDURE [h: Handle, mark: Mark, code: ReplyCode _ unspecified, text: ROPE _ NIL, sendEOC: BOOLEAN _ FALSE]; <> PutPList: PROCEDURE [h: Handle, pList: PList, sendEOC: BOOLEAN _ FALSE]; <> PutCommandAndPList: PROCEDURE [h: Handle, mark: Mark, pList: PList, sendEOC: BOOLEAN _ FALSE]; <> PutEOC: PROCEDURE [h: Handle]; <> <<>> <> GetBuffer: PROCEDURE [h: Handle] RETURNS [buffer: REF TEXT]; ReleaseBuffer: PROCEDURE [h: Handle, buffer: REF TEXT]; <<>> <> NameToPList: PROCEDURE [plist: PList, name: Rope.ROPE, type: FilenameType]; PListToName: PROCEDURE [plist: PList, type: FilenameType] RETURNS[name: Rope.ROPE]; <<>> <> GenerateFailed: PROCEDURE [h: Handle, code: FailureCode, text: Rope.ROPE _ NIL, resumable: BOOLEAN _ FALSE]; <> GenerateNo: PROCEDURE [h: Handle, code: FailureCode, text: Rope.ROPE _ NIL, sendEOC: BOOLEAN _ FALSE]; <> GenerateNoAndFailed: PROCEDURE [h: Handle, code: FailureCode, text: Rope.ROPE _ NIL, resumable: BOOLEAN _ FALSE]; <> GenerateStreamClosingError: PROCEDURE [h: Handle, why: PupStream.CloseReason]; GenerateProtocolError: PROCEDURE [h: Handle, type: ProtocolError, mark: Mark, code: CHARACTER _ 0C, resumable: BOOLEAN _ FALSE] ; MapNameLookupError: PROCEDURE [error: PupName.Code] RETURNS [FailureCode]; <> MapStreamClosingError: PROCEDURE [error: PupStream.CloseReason] RETURNS [FailureCode]; <> <<>> <> Mark: TYPE = MACHINE DEPENDENT {retrieve (1), store (2), yes (3), no (4), hereIsFile (5), endOfCommand (6), comment (7), version (8), newStore (9), enumerate (10), hereIsPList (11), newEnumerate (12), delete (14), rename (15), storeMail (16), retrieveMail (17), flushMailbox (18), mailboxException (19), (255)}; ftpVersion: CARDINAL = 1; -- FTP protocol version END. <> <> <<>>