ref: babf901b4a508c3ec5d1f89655f10377bbdf9637
dir: /appl/cmd/tclsh.b/
implement Tclsh;
include "sys.m";
sys: Sys;
include "draw.m";
include "bufio.m";
bufmod : Bufio;
Iobuf : import bufmod;
include "tk.m";
include "../lib/tcl.m";
tcl : Tcl_Core;
Tclsh: module {
init: fn(ctxt: ref Draw->Context, argv: list of string);
};
init(ctxt: ref Draw->Context, argv : list of string){
sys=load Sys Sys->PATH;
tcl=load Tcl_Core Tcl_Core->PATH;
if (tcl==nil){
sys->print("Cannot load Tcl (%r)\n");
exit;
}
bufmod=load Bufio Bufio->PATH;
if (bufmod==nil){
sys->print("Cannot load Bufio (%r)\n");
exit;
}
lines:=chan of string;
tcl->init(ctxt,argv);
new_inp := "tcl%";
spawn tcl->grab_lines(nil,nil,lines);
for(;;){
alt{
line := <-lines =>
line = tcl->prepass(line);
msg:= tcl->evalcmd(line,0);
if (msg!=nil)
sys->print("%s\n",msg);
sys->print("%s ", new_inp);
tcl->clear_error();
}
}
}