chiark / gitweb /
fixes from testing session
[trains.git] / hostside / eventrun.procs
1 # -*- tcl -*-
2
3 cd /u/ian/things/Bessar/trains
4 exec xsetroot -solid #00000f
5
6 set trainscmd {
7     set -x
8     savelog -c 7 bessar.log
9     (set -ex
10     cd /u/ian/things/trains-bessar/hostside
11     ./stopgap-controller | ./gui-displayer -
12     ) 2>&1 | tee >(tail -10000 >bessar.log)
13 }
14
15 proc trains_start {} {
16     global trainsf trainscmd
17     trains_stop
18     set cmdl [list bash -ec $trainscmd 2>@ stderr]
19     set trainsf [open |$cmdl w]
20     fconfigure $trainsf -buffering none -blocking no
21 }
22
23 proc tw {args} {
24     global trainsf
25     if {![info exists trainsf]} return
26     if {[catch {
27         puts $trainsf $args
28     } emsg]} {
29         puts stderr "tw: $emsg"
30         trains_stop
31     } else {
32         puts "tw: $args"
33     }
34 }
35
36 proc okagain {} {
37     global okagain
38     set okagain 1
39 }
40
41 proc trains_stop {} {
42     global trainsf okagain
43     if {![info exists trainsf]} return
44     catch { close $trainsf }
45     unset trainsf
46     after 3000 okagain
47     vwait okagain
48 }