DIRECTORY Commander USING [CommandProc, Register], FS USING [StreamOpen], FSRope USING [StreamFromRope], IO, Rope, WalnutDefs USING [Error], WalnutOps USING [EndNewMail, RecordNewMailInfo, StartNewMail], WalnutRoot USING [FlushAndContinue], WalnutStream USING [CopyBytes]; RecoverNewMail: CEDAR PROGRAM IMPORTS Commander, FS, FSRope, IO, WalnutDefs, WalnutOps, WalnutRoot, WalnutStream = BEGIN ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; server: ROPE _ "Salvador.ms"; SetupRecover: Commander.CommandProc = { clStream: STREAM _ FSRope.StreamFromRope[cmd.commandLine]; fileName, outcome: ROPE; num: INT; fileName _ clStream.GetTokenRope[IO.IDProc ! IO.EndOfStream => CONTINUE].token; num _ clStream.GetInt[ ! IO.EndOfStream => { num _ 1; CONTINUE}]; outcome _ Recover[fileName, num]; cmd.out.PutRope[outcome]; }; Recover: PUBLIC PROC[fName: ROPE, num: INT _ 1] RETURNS[ROPE] = { ENABLE WalnutDefs.Error => { WalnutOps.EndNewMail[]; GOTO err}; fStrm: STREAM; ms: STREAM _ WalnutOps.StartNewMail[]; fLength: INT; IF ms = NIL THEN RETURN["Can't get new mail stream"]; fStrm _ FS.StreamOpen[fName]; fLength _ fStrm.GetLength[]; ms.SetIndex[ms.GetLength[]]; WalnutStream.CopyBytes[from: fStrm, to: ms, num: fStrm.GetLength[]]; WalnutRoot.FlushAndContinue[ms]; WalnutOps.RecordNewMailInfo[ms.GetLength[], server, num]; WalnutOps.EndNewMail[]; fStrm.Close[]; RETURN[IO.PutFR["Copied %g bytes from %g\n", IO.int[fLength], IO.rope[fName]] ]; EXITS err => RETURN["WalnutDefs.Error"]; }; Commander.Register["Recover", SetupRecover, "Recovers a Walnut newMailLog; syntax is \"Recover logFile\""]; END. File: RecoverNewMail.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Willie-Sue on August 5, 1985 11:40:46 am PDT Woosh, August 5, 1985 11:43:23 am PDT ******************************************************** RecoverNewMail, copies fName onto newMailLog Κn˜šœ™Icodešœ Οmœ1™Jšœ žœ˜$šœ žœ ˜J˜——šœžœž˜šžœ žœ žœ3˜TJ˜——Jšž˜J˜Jšžœžœžœ˜Jšžœžœžœžœ˜Jšœžœ˜J˜Jšœ8™8Jšœ,™,J˜šΟn œ˜'Jšœ žœ*˜:Jšœžœ˜Jšœžœ˜ Jšœ!žœ žœžœ˜OJšœžœžœ˜AJšœ!˜!Jšœ˜J˜—J˜šŸœžœžœžœžœžœžœ˜AJ˜šžœ.žœ˜@Jšœžœ˜Jšœžœ˜&Jšœ žœ˜ Jšžœžœžœžœ˜5Jšœžœ˜Jšœ˜Jšœ˜JšœD˜DJ˜ Jšœ9˜9Jšœ˜Jšœ˜Jšžœžœ$žœžœ˜Pšž˜Jšœžœ˜"———˜J˜—J˜˜+J˜?—J˜Jšžœ˜J˜J˜J˜—…—J Ξ