-- Pupwatch: verbose log -- DiskLog.mesa -- Andrew Birrell October 26, 1983 3:02 pm DIRECTORY Ascii USING[ CR, SP,TAB ], BasicTime USING[ Now ], FS USING[ Copy, Error, StreamOpen ], IO USING[ Close, Put, PutChar, PutRope, STREAM], LookerDefs USING[], Rope USING[ ROPE ], ViewerClasses USING[ Viewer ], ViewerOps USING[ FindViewer, RestoreViewer ], ViewerTools USING[ MakeNewTextViewer ]; DiskLog: PROGRAM IMPORTS FS, IO, BasicTime, ViewerOps, ViewerTools EXPORTS LookerDefs = BEGIN lineLength: CARDINAL _ 0; lineMaxlength: CARDINAL = 100; firstChar: BOOLEAN _ TRUE; firstTime: BOOLEAN _ TRUE; DiskChar: PUBLIC PROC[c: CHARACTER] = BEGIN IF firstChar THEN BEGIN firstChar _ FALSE; IF firstTime THEN BEGIN firstTime _ FALSE; file _ FS.StreamOpen[logName, $create]; END ELSE BEGIN FS.Copy[from: logName, to: logName, keep: 1 ! FS.Error => CONTINUE]; file _ FS.StreamOpen[logName, $append]; END; LogTime[]; END; IF c = Ascii.CR THEN { IO.PutChar[file, c]; lineLength _ 0 } ELSE { IO.PutChar[file, c]; lineLength _ lineLength+1 }; END; LogTime: PROC = BEGIN IO.PutRope[file, "Pupwatch.log written at "]; IO.Put[file, [time[BasicTime.Now[]]] ]; END; DiskMultiple: PUBLIC PROC[desc: LONG DESCRIPTOR FOR PACKED ARRAY OF CHARACTER] = BEGIN FOR i: CARDINAL IN [0..LENGTH[desc]) DO c: CHARACTER = desc[i]; IF c IN [40C..176C] THEN DiskChar[c] ELSE DiskChar['?]; ENDLOOP; END; DiskPos: PUBLIC PROC[pos: CARDINAL] = BEGIN THROUGH [lineLength..pos-1) DO IO.PutChar[file, Ascii.SP] ENDLOOP; IO.PutChar[file, Ascii.TAB]; -- help alignment for variable width fonts -- lineLength _ MAX[lineLength, lineLength+pos]; END; logName: Rope.ROPE = "Pupwatch.log"; DiskCommit: PUBLIC PROC = BEGIN DiskChar[Ascii.CR]; DiskChar[Ascii.CR]; IO.Close[file]; BEGIN v: ViewerClasses.Viewer = ViewerOps.FindViewer["Pupwatch.log"].viewer; IF v = NIL THEN [] _ ViewerTools.MakeNewTextViewer[ info: [name: logName, file: "Pupwatch.log", iconic: FALSE] ] ELSE ViewerOps.RestoreViewer[v]; END; firstChar _ TRUE; END; file: IO.STREAM; END. Ę ˜JšūĪcœœ,œĪk œ žœžœžœžœžœ žœžœžœžœ žœžœ žœžœžœžœ+žœĪbœžœžœžœžœ$žœžœžœžœžœžœ žœžœĪnœžœžœž œžœžœ žœžœžœ žœžœžœžœžœ+žœžœžœ žœ,žœ žœžœ+žœžœžœ žœžœžœ&žœžœ2žœ œžœžœžœ.žœ(žœ  œžœžœžœž œžœžœžœžœž œžœžœžœžœžœ žœž œžœžœžœžœžœžœ œžœžœžœžœžœžœžœžœžœžœžœ-œžœ žœžœ  œžœžœžœžœžœžœžœPžœžœžœfžœžœžœžœžœ žœžœžœ˜Ä—…—Æ ė