|  | #!/bin/sh | 
|  | # Tcl ignores the next line -*- tcl -*- \ | 
|  | exec wish "$0" -- "$@" | 
|  |  | 
|  | # This is a trivial implementation of an SSH_ASKPASS handler. | 
|  | # Git-gui uses this script if none are already configured. | 
|  |  | 
|  | set answer {} | 
|  | set yesno  0 | 
|  | set rc     255 | 
|  |  | 
|  | if {$argc < 1} { | 
|  | set prompt "Enter your OpenSSH passphrase:" | 
|  | } else { | 
|  | set prompt [join $argv " "] | 
|  | if {[regexp -nocase {\(yes\/no\)\?\s*$} $prompt]} { | 
|  | set yesno 1 | 
|  | } | 
|  | } | 
|  |  | 
|  | message .m -text $prompt -justify center -aspect 4000 | 
|  | pack .m -side top -fill x -padx 20 -pady 20 -expand 1 | 
|  |  | 
|  | entry .e -textvariable answer -width 50 | 
|  | pack .e -side top -fill x -padx 10 -pady 10 | 
|  |  | 
|  | if {!$yesno} { | 
|  | .e configure -show "*" | 
|  | } | 
|  |  | 
|  | frame .b | 
|  | button .b.ok     -text OK     -command finish | 
|  | button .b.cancel -text Cancel -command {destroy .} | 
|  |  | 
|  | pack .b.ok -side left -expand 1 | 
|  | pack .b.cancel -side right -expand 1 | 
|  | pack .b -side bottom -fill x -padx 10 -pady 10 | 
|  |  | 
|  | bind . <Visibility> {focus -force .e} | 
|  | bind . <Key-Return> finish | 
|  | bind . <Key-Escape> {destroy .} | 
|  | bind . <Destroy>    {exit $rc} | 
|  |  | 
|  | proc finish {} { | 
|  | if {$::yesno} { | 
|  | if {$::answer ne "yes" && $::answer ne "no"} { | 
|  | tk_messageBox -icon error -title "Error" -type ok \ | 
|  | -message "Only 'yes' or 'no' input allowed." | 
|  | return | 
|  | } | 
|  | } | 
|  |  | 
|  | set ::rc 0 | 
|  | puts $::answer | 
|  | destroy . | 
|  | } | 
|  |  | 
|  | wm title . "OpenSSH" | 
|  | tk::PlaceWindow . |