Syntax10.Scn.Fnt=8FoldElemsNew#Syntax10.Scn.Fnt scheme = "mailto"; defaultPort = Web.anyPort; (* ??? *) url = "http://www.ssw.uni-linz.ac.at:2000/"; method = "POST"; type = "application/x-www-form-urlencoded"; sendMail = "type=gensend"; mailSvr = "&svr="; profMS = "mailServer"; senderAdr = "&from="; profSA = "email"; senderName = "&name="; profSN = "name"; recAdr = "&to="; moreAdr = "&cc="; profCC = "cc"; signature = "&body="; profSF = "signatureText"; profSection = "LinkMail"; 848Syntax10.Scn.Fnt"8FoldElemsNew#Syntax10.Scn.Fnt,, LoaderDesc = RECORD (Web.LoaderDesc) END;8& Loader = POINTER TO LoaderDesc;  8w8#Syntax10.Scn.Fntgg server, from, name : ARRAY 128 OF CHAR; cc : ARRAY 1024 OF CHAR; sign : POINTER TO ARRAY OF CHAR; 8>r8#Syntax10.Scn.Fntll VAR i : INTEGER; BEGIN i := 0; WHILE str[i] # 0X DO INC(i) END; Files.WriteBytes(r, str, i) END Write;808#Syntax10.Scn.Fnt VAR pos : INTEGER; BEGIN Web.EncodeStr(str, " "); pos := 0; WHILE str[pos] # 0X DO IF str[pos] = " " THEN str[pos] := "+" ELSIF str[pos] = "+" THEN str[pos] := "%"; Strings.Insert("2B", pos + 1, str); INC(pos, 2) END; INC(pos) END END EncodeStr;8k8#Syntax10.Scn.Fnt^^ VAR recipient : ARRAY 128 OF CHAR; body : Web.Body; r : Files.Rider; BEGIN COPY(act.url.path, recipient); EncodeStr(recipient); NEW(body); body.type := type; body.coding := ""; body.file := Files.New(""); Files.Set(r, body.file, 0); Write(r, sendMail); Write(r, mailSvr); Write(r, server); Write(r, senderAdr); Write(r, from); Write(r, senderName); Write(r, name); Write(r, recAdr); Write(r, recipient); Write(r, moreAdr); Write(r, cc); Write(r, signature); IF sign # NIL THEN Write(r, sign^) END; Files.Close(body.file); Web.OpenUrl(method, url, txt, elem, body, Web.default) END Open;8 Syntax10b.Scn.Fnt8CSyntax10.Scn.Fnt Syntax10i.Scn.Fnt$> BEGIN (* only used to force loading of module *) END Install;8A8#Syntax10.Scn.Fnt VAR ldr : Loader; BEGIN NEW(ldr); ldr.scheme := scheme; ldr.defPort := defaultPort; ldr.infoMeth := ""; Web.InstallLoader(ldr); END InstallProtocol;8F8#Syntax10.Scn.Fnt END NoNotify;858#Syntax10.Scn.FntVV VAR t : Texts.Text; r : Texts.Reader; f : Files.File; rdr : Files.Rider; buf : ARRAY 512 OF CHAR; i : INTEGER; BEGIN f := Files.Old(name); IF f # NIL THEN NEW(t); Texts.Open(t, name); t.notify := NoNotify; Texts.OpenReader(r, t, 0); f := Files.New(""); Files.Set(rdr, f, 0); REPEAT i := 0; WHILE ~ r.eot & (i < 200) DO Texts.Read(r, buf[i]); INC(i) END; buf[i] := 0X; EncodeStr(buf); Write(rdr, buf) UNTIL r.eot; i := SHORT(Files.Length(f)); Files.Set(rdr, f, 0); NEW(sign, i + 1); Files.ReadBytes(rdr, sign^, i); sign[i] := 0X END END CollectSignature;88#Syntax10.Scn.Fnt VAR entry : Web.ProfileEntry; BEGIN Web.GetProfile(profSection, profMS, entry); IF (entry # NIL) & (entry.class IN {Texts.Name, Texts.String}) THEN COPY(entry.str, server); EncodeStr(server) ELSE server := "" END; Web.GetProfile(profSection, profSA, entry); IF (entry # NIL) & (entry.class IN {Texts.Name, Texts.String}) THEN COPY(entry.str, from); EncodeStr(from) ELSE from := "" END; Web.GetProfile(profSection, profSN, entry); IF (entry # NIL) & (entry.class IN {Texts.Name, Texts.String}) THEN COPY(entry.str, name); EncodeStr(name) ELSE name := "" END; Web.GetProfile(profSection, profCC, entry); cc := ""; WHILE (entry # NIL) & (entry.class IN {Texts.Name, Texts.String}) DO Strings.Append(" ", cc); Strings.Append(entry.str, cc); entry := entry.next END; Strings.Delete(cc, 0, 1); EncodeStr(cc); Web.GetProfile(profSection, profSF, entry); IF (entry # NIL) & (entry.class IN {Texts.Name, Texts.String}) THEN CollectSignature(entry.str) END END InitGlobalVars;88#Syntax10.Scn.Fnt!! InstallProtocol; InitGlobalVars8MODULE LinkMail; IMPORT Files, Texts, Strings, Web; CONST  TYPE  VAR  PROCEDURE Write (VAR r : Files.Rider; str : ARRAY OF CHAR);  PROCEDURE EncodeStr(VAR str : ARRAY OF CHAR);  PROCEDURE (ldr : Loader) Open (act : Web.UrlStack; txt : Web.Text; elem : Texts.Elem; cached : BOOLEAN);  PROCEDURE Install*;  PROCEDURE InstallProtocol;  PROCEDURE NoNotify (T: Texts.Text; op: INTEGER; beg, end: LONGINT);  PROCEDURE CollectSignature (name : ARRAY OF CHAR);  PROCEDURE InitGlobalVars;  BEGIN  END LinkMail.