X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=connect.c;h=57dc20c43ca1ba205ec0a18e263f9dde081390f4;hb=fcce886bfb4671c4c17a3f99cb7caf0f7ab94e16;hp=0119bd377b23388c0c9ea41ee9fd134034c5a443;hpb=98ad90fbab90a423ca835956d3121c60db2eb218;p=git.git diff --git a/connect.c b/connect.c index 0119bd377..57dc20c43 100644 --- a/connect.c +++ b/connect.c @@ -132,7 +132,7 @@ int path_match(const char *path, int nr, char **match) enum protocol { PROTO_LOCAL = 1, PROTO_SSH, - PROTO_GIT, + PROTO_GIT }; static enum protocol get_protocol(const char *name) @@ -621,15 +621,22 @@ int finish_connect(struct child_process *conn) char *git_getpass(const char *prompt) { - char *askpass; + const char *askpass; struct child_process pass; const char *args[3]; static struct strbuf buffer = STRBUF_INIT; askpass = getenv("GIT_ASKPASS"); - - if (!askpass || !(*askpass)) - return getpass(prompt); + if (!askpass) + askpass = askpass_program; + if (!askpass) + askpass = getenv("SSH_ASKPASS"); + if (!askpass || !(*askpass)) { + char *result = getpass(prompt); + if (!result) + die_errno("Could not read password"); + return result; + } args[0] = askpass; args[1] = prompt;