DIRECTORY IO, BasicTime, Process, RuntimeError, CommanderSys, Rope; CommanderSysDImpl: CEDAR PROGRAM IMPORTS IO, BasicTime, Process, RuntimeError EXPORTS CommanderSys ~ BEGIN OPEN CommanderSys, Rope; ExtendedNow: PUBLIC PROC RETURNS [EGMT] = { RETURN [[BasicTime.Now[], 0]] }; GetEnv: PUBLIC PROC [key: ROPE] RETURNS [ROPE] = { RETURN [NIL] }; CurrentProcess: PUBLIC PROC RETURNS [PROCESS] = TRUSTED { RETURN [LOOPHOLE[Process.GetCurrent[]]]; }; AbortProcess: PUBLIC PROC [process: PROCESS] = TRUSTED { Process.Abort[process]; }; UNCAUGHTProtect: PUBLIC PROC [inner: PROC, rejectP: PROC [ROPE] RETURNS [BOOL]] RETURNS [ok: BOOL ¬ TRUE] = { inner[! RuntimeError.UNCAUGHT => IF rejectP[SigToRope[LOOPHOLE[signal]]] THEN REJECT ELSE {ok ¬ FALSE; CONTINUE}]; }; SigToRope: PROC [sig: SIGNAL ANY RETURNS ANY] RETURNS [ROPE] = { ref: REF SIGNAL ANY RETURNS ANY = NEW[SIGNAL ANY RETURNS ANY ¬ sig]; RETURN [IO.PutFR1["%g", [refAny[ref]]]] }; END. ’ CommanderSysDImpl.mesa Copyright Σ 1990, 1991 by Xerox Corporation. All rights reserved. Michael Plass, February 10, 1990 5:03:15 pm PST ΚF•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ Οeœ7™BK™/K™—KšΟk œžœ7˜CK˜KšΟnœžœž˜ Kšžœžœ"˜,Kšžœ ˜šœžœžœ˜ K˜K˜š Ÿ œžœžœžœžœ˜+Kšžœ˜Kšœ˜K˜—š Ÿœžœžœžœžœžœ˜2Kšžœžœ˜ Kšœ˜K˜—š Ÿœžœžœžœžœžœ˜9Kšžœžœ˜(Kšœ˜K˜—š Ÿ œžœžœ žœžœ˜8Kšœ˜Kšœ˜K˜—šŸœžœžœ žœ žœžœžœžœžœžœžœ˜mKšœžœžœžœ žœžœžœžœžœ˜rKšœ˜K˜—šŸ œžœžœžœžœžœžœžœ˜@Kšœžœžœžœžœžœžœžœžœžœžœ˜DKšžœžœ˜'K˜K˜——K˜Kšžœ˜—…—ΆŽ