# tty.tcl - xterm as tty for the inferior # Copyright (C) 1996, 2000 Red Hat, Inc # Written by Tom Tromey # # Interface to the inferior's terminal. This is very rough, and is # guaranteed to only work on Unix machines (if even there). # namespace eval tty { namespace export create variable _xterm_fd {} proc create {} { variable _xterm_fd destroy # Tricky: we exec /bin/cat so that the xterm will exit whenever we # close the write end of the pipe. Note that the stdin # redirection must come after tty is run; tty looks at its stdin. set shcmd {/bin/sh -c 'exec 1>&7; tty; exec /bin/cat 0<&6'} set fg [option get . foreground Foreground] if {$fg == ""} then { set fg black } set bg [. cget -background] if {$bg == ""} then { set bg [lindex [. configure -background] 3] } set xterm [list /bin/sh -c "exec xterm -T 'Gdb Child' -n Gdb -bg '$bg' -fg '$fg' -e $shcmd 6<&0 7>&1"] # Need both read and write access to xterm process. set _xterm_fd [open "| $xterm" w+] set tty [gets $_xterm_fd] # On failure we don't try the tty command. if {$tty != ""} { gdb_cmd "tty $tty" } } proc destroy {} { variable _xterm_fd if {$_xterm_fd != ""} then { # We don't care if this fails. catch {close $_xterm_fd} } set _xterm_fd {} } }