subfn broken {
for i in ${split $nl "{ps}} {
(pid gid uid state nil) := ${split ' ' $i}
if {~ $state broken} {
result=$pid $result
}
}
}
sysname = "{cat /dev/sysname}
cmds = (
ps {result = 'ps'}
mount {result = ${quote mount tcp!^$sysname /n/remote}}
bind {result = 'bind /n/remote/prog /prog'}
ps {result = 'ps'}
stack {
pid = ${broken}
if {! ~ $#pid 1} {
result = ${join ' ' '# need one broken; found' $pid}
pid=''
} {
result = 'stack ' ^ $pid
}
}
debug {result = 'wm/deb -p ' ^ $pid}
exit {unmount /n/remote/prog /prog; result=''}
)
executor={sh -in}
dodemo $cmds
# could use a generator
# function that returns a function to evaluate
# the next step in the demo.
# e.g.
#
#cmd = ${vbind {
# (label rcmd cmds) := $cmds
# cmd = ${vbind $0 cmds}
# buttons=($label $rcmd)
#} cmds}
|