<<>> <> <> <> <<>> <> DIRECTORY BasicTime USING [GMT], Commander USING [Handle], Rope USING [ROPE]; CommanderBackdoor: CEDAR DEFINITIONS = BEGIN <> ROPE: PRIVATE TYPE = Rope.ROPE; <> CommandToolData: TYPE ~ REF CommandToolDataRep; CommandToolDataRep: TYPE ~ PACKED RECORD [ Prompt: PROC [cmd: Commander.Handle] ¬ NIL, <> Lookup: PROC [cmd: Commander.Handle] ¬ NIL, <> Before: PROC [cmd: Commander.Handle] ¬ NIL, <> After: PROC [cmd: Commander.Handle] ¬ NIL, <> InitChild: PROC [cmd: Commander.Handle] ¬ NIL, <> process: REF PROCESS ¬ NIL, verbose: BOOL ¬ FALSE, statistics: BOOL ¬ FALSE, keepHistory: BOOL ¬ FALSE, stopOnFailure: BOOL ¬ FALSE, parentCommander: Commander.Handle ¬ NIL, recent: REF CommandHistoryElement, history: CommandHistoryList, childHistory: CommandHistoryList, private: REF PrivateDataRep ]; CommandHistoryList: TYPE ~ LIST OF CommandHistoryElement; CommandHistoryElement: TYPE ~ RECORD [ commandNumber: CARD, wholeCommandLine: ROPE, result: REF, msg: ROPE, startTime: BasicTime.GMT, seconds: REAL, allocations: CARD, pageFaults: CARD, subHistory: CommandHistoryList ]; PrivateDataRep: TYPE; GetCommandToolData: PROC [cmd: Commander.Handle] RETURNS [CommandToolData]; AdamOrEve: PROC [cmd: Commander.Handle] RETURNS [Commander.Handle]; <> AbortCommander: PROC [cmd: Commander.Handle]; <> SetProcess: PROC [cmd: Commander.Handle, process: PROCESS]; <> END.