| #!/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 . |