DIRECTORY BasicTime USING [ GMT, Now ], Commander USING [ Register ], CommandTool USING [ ArgumentVector, Parse ], IO USING [ card, PutFR, rope, STREAM, time ], Rope USING [ ROPE ], SystemNames USING [ UserName ], UXIO USING [ CreateFileStream ], CasabaPlatform; CasabaPlatformImpl: CEDAR MONITOR IMPORTS BasicTime, Commander, CommandTool, IO, SystemNames, UXIO EXPORTS CasabaPlatform ~ { OPEN CasabaPlatform; ROPE: TYPE ~ Rope.ROPE; Register: PUBLIC PROC [ key: Rope.ROPE, proc: CommandProc _ NIL, doc: Rope.ROPE _ NIL, clientData: REF _ NIL, interpreted: BOOL _ TRUE ] ~ { Commander.Register[key, proc, doc, clientData, interpreted]; }; GetArgument: PUBLIC PROC [ cmd: Handle, index: NAT ] RETURNS [ arg: Rope.ROPE _ NIL ] ~ { args: CommandTool.ArgumentVector ~ CommandTool.Parse[cmd]; arg _ args[index]; }; Error: PUBLIC ERROR [ code: ATOM, explanation: Rope.ROPE ] ~ CODE; StreamOpen: PUBLIC PROC [ fileName: Rope.ROPE, accessOptions: AccessOptions _ $read ] RETURNS [ s: IO.STREAM _ NIL ] ~ { SELECT accessOptions FROM read => { s _ UXIO.CreateFileStream[fileName, read] }; append => { s _ UXIO.CreateFileStream[fileName, append] }; write => { s _ UXIO.CreateFileStream[fileName, write] }; create => { s _ UXIO.CreateFileStream[fileName, write] }; ENDCASE => { ERROR }; }; ToolVersion: PUBLIC PROC [ name: Rope.ROPE, version: Version, p: PROC ANY RETURNS ANY ] RETURNS [ v: Rope.ROPE _ NIL ] ~ { date: BasicTime.GMT ~ BasicTime.Now[]; -- eventually: Loader.BCDBuildTime[p]; patch: Rope.ROPE ~ IF ( version.patch # 0 ) THEN IO.PutFR[".%g", IO.card[version.patch] ] ELSE NIL; v _ IO.PutFR["%g [%g.%g%g] of %g", IO.rope[name], IO.card[version.major], IO.card[version.minor], IO.rope[patch], IO.time[date] ]; }; BuildTime: PUBLIC PROC [ p: PROC ANY RETURNS ANY ] RETURNS [ date: BasicTime.GMT ] ~ { date _ BasicTime.Now[]; -- eventually: Loader.BCDBuildTime[p]; }; UserName: PUBLIC PROC RETURNS [ user: Rope.ROPE _ NIL ] ~ { somebody: Rope.ROPE ~ "somebody"; user _ SystemNames.UserName[]; }; }. 0CasabaPlatformImpl.Mesa Copyright Σ 1988 by Xerox Corporation. All rights reserved. Bill Jackson (bj) October 20, 1988 11:10:10 am PDT Loader USING [ BCDBuildTime ], UserCredentials USING [ Get ], Commander FS Version Utilities eventually: UserCredentials.Get[].name; or SystemNames.UserName[] Κ.˜šœ™Icode™K˜K˜—š žœœœœœœ˜;šœœ˜!KšœA™A—Kšœ˜K˜——K˜K˜—K˜J™—…—Φ 4