DIRECTORY Atom, Commander, CommanderBackdoor, CommanderOps, IO, ProcessProps, Rope, X11EvalServer; X11CommanderServer: CEDAR PROGRAM IMPORTS Commander, CommanderBackdoor, CommanderOps, IO, ProcessProps, Rope, X11EvalServer ~ BEGIN CreateListenerCommand: Commander.CommandProc ~ { success: BOOL; message: Rope.ROPE; display: Rope.ROPE ¬ NIL; selection: Rope.ROPE ¬ "CedarCommander"; DO arg: Rope.ROPE ¬ CommanderOps.NextArgument[cmd]; IF arg=NIL THEN EXIT; SELECT TRUE FROM Rope.Equal[arg, "-display", FALSE] => display ¬ CommanderOps.NextArgument[cmd]; Rope.Equal[arg, "-selection", FALSE] => selection ¬ CommanderOps.NextArgument[cmd]; ENDCASE => CommanderOps.Failed["unknown argument"]; ENDLOOP; [success, message] ¬ X11EvalServer.Create[server: display, selection: selection, proc: CommandProc]; IF success THEN msg ¬ "ok" ELSE { msg ¬ Rope.Concat["selection ownership not established ", message]; result ¬ $Failure }; }; NoPrompt: PROC [cmd: Commander.Handle] ~ { }; CommandProc: PROC [in: Rope.ROPE, environment: REF] RETURNS [out: Rope.ROPE ¬ NIL, result: REF ¬ NIL] = { inStream: IO.STREAM ¬ IO.RIS[in]; outStream: IO.STREAM ¬ IO.ROS[]; Inner: PROC = { commander: Commander.Handle = CommanderOps.CreateFromStreams[in: inStream, out: outStream]; CommanderBackdoor.GetCommandToolData[commander].Prompt ¬ NoPrompt; [] ¬ CommanderOps.ReadEvalPrintLoop[commander]; }; ProcessProps.AddPropList[LIST[NEW[Atom.DottedPairNode ¬ ["", ""]]], Inner]; out ¬ IO.RopeFromROS[outStream]; }; Commander.Register["X11CommanderServer", CreateListenerCommand, "create an interop listener"]; END. ΌX11CommanderServer.mesa Copyright Σ 1991, 1992 by Xerox Corporation. All rights reserved. Christian Jacobi, April 24, 1991 5:26 pm PDT Christian Jacobi, May 10, 1991 12:22 pm PDT Κ(–(cedarcode) style•NewlineDelimiter ˜codešœ™Kšœ Οeœ7™BK™,K™+K™—šΟk œ˜ KšœX˜XK˜—šΟnœžœž˜!KšžœU˜\—šž˜K˜—šŸœ˜0Kšœ žœžœ˜"Kšœžœžœ˜Kšœžœ˜(šž˜Kšœ žœ"˜0Kšžœžœžœžœ˜šžœžœž˜Kšœžœ.˜OKšœžœ0˜SKšžœ,˜3—Kšžœ˜—K˜dšžœ ˜ Kšžœ ˜šžœ˜K˜CK˜Kšœ˜——K˜—K˜šŸœžœ˜*Kšœ˜K˜—šŸ œžœ žœžœžœ žœžœ žœžœ˜iKš œ žœžœžœžœ˜!Kš œ žœžœžœžœ˜ šŸœžœ˜Kšœ[˜[K˜BK˜/Kšœ˜—Kšœžœžœ*˜KKšœžœ˜ K˜—K˜Kšœ^˜^Kšžœ˜K˜—…—8