-- File: Answer.Mesa -- edited by Karlton, December 2, 1980 1:28 PM -- edited by Brotz, March 4, 1983 11:58 AM Answer: DEFINITIONS = BEGIN Block: TYPE = RECORD [buffer: LONG POINTER TO PACKED ARRAY [0 .. 0) OF CHARACTER, length: CARDINAL]; -- This is used exclusively with the putBlock procedure passed to the MakeHeader -- procedure described below. The client is expected to make up the header -- of the new message from the Blocks given back to the client by successive -- calls on the putBlock procedure. There will only be a single CR terminating -- the last Buffer. If the client wishes to add more lines to the constructed -- header, this may be done. MakeHeader: PROCEDURE [ getChar: PROCEDURE [CARDINAL] RETURNS [CHARACTER], getLength: CARDINAL, putBlock: PROCEDURE [Block], getPages: PROCEDURE [CARDINAL] RETURNS [LONG POINTER], freePages: PROCEDURE [LONG POINTER], userName, userRegistry: STRING, cForCopies: BOOLEAN _ FALSE] RETURNS [answerError: BOOLEAN]; -- Causes an answering header for a message that the client currently has. -- 'getChar' procedure is used to get characters from the old message header. -- The argument to 'getChar' is which character from the old header is needed. -- The same character may be asked for more than once. 'getLength' is the length -- of the old message being parsed; 'getChar' will always be called with the -- argument in the range [0 .. getLength). 'putBlock' is called by MakeHeader -- successively with pieces of the new header under construction. 'getPages' -- and 'freePages' are called by MakeHeader as it needs temporary storage while -- constructing the new header. If MakeHeader is not unwound, all storage will -- be released before it returns. If being used in the Alto/Mesa world, the high -- order word of the pointers must be zero. 'userName' and 'userRegistry' may not -- be NIL, and are used to eliminate some "redundant" information from the constructed -- header. 'cForCopies causes the constructed header to have "c: " instead -- of "cc: ". -- If the parse of the old message failed, then MakeHeader returns TRUE. END. -- Answer -- (635)\f1