Am 04.01.2012 08:55 schrieb Sven Strickroth: > The Git.pm part is easy, but I also tried to update prompt.c (untested). I said "easy" and then I mailed the wrong/outdated patch :( I'm sorry for the noise. From: Sven Strickroth <email@xxxxxxxxxx> Date: Wed, 4 Jan 2012 08:44:48 +0100 Subject: [PATCH] Git.pm, prompt: try reading from interactive terminal before using SSH_ASKPASS SVN tries to read reading from interactive terminal before using SSH_ASKPASS helper. This change adjust git to behave the same way. Signed-off-by: Sven Strickroth <email@xxxxxxxxxx> --- perl/Git.pm | 9 ++++----- prompt.c | 14 +++++++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/perl/Git.pm b/perl/Git.pm index 1c96a20..721aef7 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -530,13 +530,9 @@ sub prompt { $ret = _prompt($ENV{'GIT_ASKPASS'}, $prompt); } if (!defined $ret) { - $ret = _prompt($ENV{'SSH_ASKPASS'}, $prompt); - } - if (!defined $ret) { print STDERR $prompt; STDERR->flush; if ($isPassword) { - $ret = ''; require Term::ReadKey; Term::ReadKey::ReadMode('noecho'); while (defined(my $key = Term::ReadKey::ReadKey(0))) { @@ -551,10 +547,13 @@ sub prompt { if (defined $ret) { chomp($ret); } else { - $ret = ''; + undef $ret; } } } + if (!defined $ret) { + $ret = _prompt($ENV{'SSH_ASKPASS'}, $prompt); + } return $ret; } diff --git a/prompt.c b/prompt.c index 72ab9de..e791619 100644 --- a/prompt.c +++ b/prompt.c @@ -52,9 +52,17 @@ char *git_prompt(const char *prompt, int flags) } r = git_terminal_prompt(prompt, flags & PROMPT_ECHO); - if (!r) - die_errno("could not read '%s'", prompt); - return r; + if (r) + return r; + + if (flags & PROMPT_ASKPASS) { + const char *askpass; + askpass = getenv("SSH_ASKPASS"); + if (askpass && *askpass) + return do_askpass(askpass, prompt); + } + + die_errno("could not read '%s'", prompt); } char *git_getpass(const char *prompt) -- Best regards, Sven Strickroth ClamAV, a GPL anti-virus toolkit http://www.clamav.net PGP key id F5A9D4C4 @ any key-server -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html