Posted to tcl by pooryorick at Sat Mar 23 21:16:36 GMT 2013view raw
- #! /bin/env tclsh
- package require Expect
- proc tclprompt {} {
- proc [lindex [info level 0] 0] {} {
- return {\n%\s$}
- }
- return {%\s*$}
- }
- proc input {fh {command {}}} {
- if {$command ne {} && [info complete $command]} {
- expect -re [tclprompt] {
- send $command
- }
- fileevent $fh readable [list input $fh]
- return
- }
- if {[eof $fh]} {
- set ::done 1
- return
- }
- gets $fh line
- if {[set line [string trimright $line]] ne {}} {
- append command $line\r
- }
- fileevent $fh readable [list input $fh $command]
- }
- spawn tclsh
- set timeout -1
- set fh [open [lindex $argv 0]]
- fconfigure $fh -blocking 0
- fileevent $fh readable [list input $fh]
- vwait done