summaryrefslogtreecommitdiff
path: root/prompt.c
AgeCommit message (Collapse)AuthorFilesLines
2012-02-03prompt: fall back to terminal if askpass failsLibravatar Jeff King1-7/+17
The current askpass code simply dies if calling an askpass helper fails. Worse, in some failure modes it doesn't even print an error (if start_command fails, then it prints its own error; if reading fails, we print an error; but if the command exits non-zero, finish_command fails and we print nothing!). Let's be more kind to the user by printing an error message when askpass doesn't work out, and then falling back to the terminal (which also may fail, of course, but we die already there with a nice message). While we're at it, let's clean up the existing error messages a bit. Now that our prompts are very long and contain quotes and colons themselves, our error messages are hard to read. So the new failure modes look like: [before, with a terminal] $ GIT_ASKPASS=false git push $ echo $? 128 [before, with no terminal, and we must give up] $ setsid git push fatal: could not read 'Password for 'https://peff@github.com': ': No such device or address [after, with a terminal] $ GIT_ASKPASS=false git push error: unable to read askpass response from 'false' Password for 'https://peff@github.com': [after, with no terminal, and we must give up] $ GIT_ASKPASS=false setsid git push error: unable to read askpass response from 'false' fatal: could not read Password for 'https://peff@github.com': No such device or address Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-03prompt: clean up strbuf usageLibravatar Jeff King1-2/+1
The do_askpass function inherited a few bad habits from the original git_getpass. One, there's no need to strbuf_reset a buffer which was just initialized. And two, it's a good habit to use strbuf_detach to claim ownership of a buffer's string (even though in this case the owning buffer goes out of scope, so it's effectively the same thing). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-12-12prompt: use git_terminal_promptLibravatar Jeff King1-1/+2
Our custom implementation of git_terminal_prompt has many advantages over regular getpass(), as described in the prior commit. This also lets us implement a PROMPT_ECHO flag for callers who want it. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-12-12refactor git_getpass into generic prompt functionLibravatar Jeff King1-16/+30
This will allow callers to specify more options (e.g., leaving echo on). The original git_getpass becomes a slim wrapper around the new function. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-12-12move git_getpass to its own source fileLibravatar Jeff King1-0/+48
This is currently in connect.c, but really has nothing to do with the git protocol itself. Let's make a new source file all about prompting the user, which will make it cleaner to refactor. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>