MailAnswer.mesa
Copyright Ó 1985, 1989, 1991 by Xerox Corporation. All rights reserved.
edited by Karlton, December 2, 1980 1:28 PM
based on Answer.mesa of Brotz, March 4, 1983 11:58 AM
edited by Willie-Sue, May 4, 1989 3:26:00 pm PDT
Doug Wyatt, March 7, 1985 11:04:10 am PST
DIRECTORY
MailBasics USING [RName],
Rope USING [ROPE];
MailAnswer: CEDAR DEFINITIONS = BEGIN
RName: TYPE = MailBasics.RName;
ROPE: TYPE = Rope.ROPE;
AnswerProc: TYPE ~ PROC[getChar: PROC [INT] RETURNS [CHAR], inputLength: INT,
userRName: RName, cForCopies: BOOL ¬ FALSE ]
RETURNS [answerError: BOOL, answer: ROPE, errorIndex: INT];
MakeHeader: PROC[which: ATOM, getChar: PROC [INT] RETURNS [CHAR], inputLength: INT,
userRName: RName, cForCopies: BOOL ¬ FALSE ]
RETURNS [answerError: BOOL, answer: ROPE, errorIndex: INT];
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 .. inputLength). 'userRName' should be a fully qualified name, and is used to eliminate some "redundant" information from the constructed header. 'cForCopies causes the constructed header to have "c: <recipient list>" instead of "cc: <recipient list>".
If the parse of the old message failed, then MakeHeader returns TRUE. IF answerError is TRUE, then errorIndex is the current value of getCharIndex (gives some idea of where the parse error occurred
RegisterAnswerProc: PROC[which: ATOM, proc: AnswerProc];
END.