{"thread":{"id":"26034","subject":"Re: [PATCH] git_getpass: fix ssh-askpass behaviour","startedAt":"2010-12-13T04:09:57Z","lastAt":"2010-12-13T04:09:57Z","messageCount":1,"participants":["Xin Wang"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"157918","messageId":"AANLkTi=V-KrwU97-KFJHd2+i05e6qsZsyMHkwpRLhCHx@mail.gmail.com","threadId":"26034","inReplyTo":null,"subject":"Re: [PATCH] git_getpass: fix ssh-askpass behaviour","fromName":"Xin Wang","fromEmail":"dram.wang@gmail.com","sentAt":"2010-12-13T04:09:57Z","receivedAt":"2010-12-13T04:09:57Z","isPatch":true,"sender":{"key":"dram.wang@gmail.com","avatar":null},"body":"Junio C Hamano <gitster <at> pobox.com> writes:\n\n>\n> Alexander Sulfrian <alexander <at> sulfrian.net> writes:\n>\n> > call ssh-askpass only if the display environment variable is also set\n> > ---\n>\n> I do not use it at all so I don't know for sure, but doesn't this break\n> OSX?\n>\n>   20f3490 (web--browse: fix Mac OS X GUI detection for 10.6, 2009-09-14)\n>\n> is an example that you can be fully graphical without having DISPLAY set\n> in some environment.  MinGW folks may want to chime in as well.\n>\n\nHow about test whether git is associated with a terminal or not?\n\n> >  connect.c |    7 +++++--\n> >  1 files changed, 5 insertions(+), 2 deletions(-)\n> >\n> > diff --git a/connect.c b/connect.c\n> > index 57dc20c..2810e3b 100644\n> > --- a/connect.c\n> > +++ b/connect.c\n> > @@ -621,7 +621,7 @@ int finish_connect(struct child_process *conn)\n> >\n> >  char *git_getpass(const char *prompt)\n> >  {\n> > -\tconst char *askpass;\n> > +\tconst char *askpass, *display;\n> >  \tstruct child_process pass;\n> >  \tconst char *args[3];\n> >  \tstatic struct strbuf buffer = STRBUF_INIT;\n> > @@ -631,7 +631,10 @@ char *git_getpass(const char *prompt)\n> >  \t\taskpass = askpass_program;\n> >  \tif (!askpass)\n> >  \t\taskpass = getenv(\"SSH_ASKPASS\");\n> > -\tif (!askpass || !(*askpass)) {\n> > +\n> > +\t/* only call askpass if display is set */\n> > +\tdisplay = getenv(\"DISPLAY\");\n> > +\tif (!display || !(*display) || !askpass || !(*askpass))\n> >  \t\tchar *result = getpass(prompt);\n> >  \t\tif (!result)\n> >  \t\t\tdie_errno(\"Could not read password\");\n>\n>\n\nXin Wang\n"}]}