2 # Tcl ignores the next line -*- tcl -*- \
5 # This is a trivial implementation of an SSH_ASKPASS handler.
6 # Git-gui uses this script if none are already configured.
15 set prompt
"Enter your OpenSSH passphrase:"
17 set prompt
[join $argv " "]
18 if {[regexp
-nocase {\
(yes\
/no\
)\?\s
*$
} $prompt]} {
23 message .m
-text $prompt -justify center
-aspect 4000
24 pack .m
-side top
-fill x
-padx 20 -pady 20 -expand 1
26 entry .e
-textvariable answer
-width 50
27 pack .e
-side top
-fill x
-padx 10 -pady 10
29 proc on_show_input_changed
{args
} {
34 .e configure
-show "*"
37 trace add variable show_input
write "on_show_input_changed"
42 checkbutton .cb_show
-text "Show input" -variable show_input
43 pack .cb_show
-side top
-anchor nw
47 button .b.ok
-text OK
-command finish
48 button .b.cancel
-text Cancel
-command cancel
50 pack .b.ok
-side left
-expand 1
51 pack .b.cancel
-side right
-expand 1
52 pack .b
-side bottom
-fill x
-padx 10 -pady 10
54 bind .
<Visibility
> {focus
-force .e
}
55 bind .
<Key-Return
> [list .b.ok invoke
]
56 bind .
<Key-Escape
> [list .b.cancel invoke
]
57 bind .
<Destroy
> {set rc
$rc}
65 if {$
::answer ne
"yes" && $
::answer ne
"no"} {
66 tk_messageBox
-icon error
-title "Error" -type ok \
67 -message "Only 'yes' or 'no' input allowed."
72 # On Windows, force the encoding to UTF-8: it is what `git.exe` expects
73 if {$
::tcl_platform
(platform
) eq
{windows
}} {
74 set ::answer
[encoding convertto utf-8 $
::answer
]