# -*- tcl -*- cd /u/ian/things/Bessar/trains exec xsetroot -solid #00000f set trainscmd { set -x savelog -c 7 bessar.log (set -ex cd /u/ian/things/trains-bessar/hostside ./stopgap-controller | ./gui-displayer - ) 2>&1 | tee >(tail -10000 >bessar.log) } proc trains_start {} { global trainsf trainscmd trains_stop set cmdl [list bash -ec $trainscmd 2>@ stderr] set trainsf [open |$cmdl w] fconfigure $trainsf -buffering none -blocking no } proc tw {args} { global trainsf if {![info exists trainsf]} return if {[catch { puts $trainsf $args puts $trainsf ask_show } emsg]} { puts stderr "tw: $emsg" trains_stop } else { puts "tw: $args" } } proc okagain {} { global okagain set okagain 1 } proc trains_stop {} { global trainsf okagain if {![info exists trainsf]} return catch { close $trainsf } unset trainsf after 3000 okagain vwait okagain }