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]; RegisterAnswerProc: PROC[which: ATOM, proc: AnswerProc]; END. x 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 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: " instead of "cc: ". 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 Κ‘•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ Οeœ=™HKšœ,™,Kšœ6™6Kšœ0™0K™)—K˜šΟk ˜ Kšœ žœ ˜Kšœžœžœ˜—K˜KšΠbl œžœž œž˜%˜Kšœžœ˜Kšžœžœžœ˜K˜—šœ žœžœ žœžœžœžœžœ žœžœ˜zKšžœžœ žœžœ˜;K˜—K˜šΟn œžœžœ žœžœžœžœžœ žœžœ˜€Kšžœžœ žœžœ˜;Kšœ™KšœΕ™ΕK™—Kš œžœžœ˜8K˜Kšžœ˜—…—NW