static char *credential_ask_one(const char *what, struct credential *c, int flags) { struct strbuf desc = STRBUF_INIT; struct strbuf prompt = STRBUF_INIT; char *r; credential_describe(c, &desc); if (desc.len) strbuf_addf(&prompt, "%s for '%s': ", what, desc.buf); else strbuf_addf(&prompt, "%s: ", what); r = git_prompt(prompt.buf, flags); strbuf_release(&desc); strbuf_release(&prompt); return xstrdup(r); }
static char *credential_ask_one(const char *what, struct credential *c) { struct strbuf desc = STRBUF_INIT; struct strbuf prompt = STRBUF_INIT; char *r; credential_describe(c, &desc); if (desc.len) strbuf_addf(&prompt, "%s for '%s': ", what, desc.buf); else strbuf_addf(&prompt, "%s: ", what); /* FIXME: for usernames, we should do something less magical that * actually echoes the characters. However, we need to read from * /dev/tty and not stdio, which is not portable (but getpass will do * it for us). http.c uses the same workaround. */ r = git_getpass(prompt.buf); strbuf_release(&desc); strbuf_release(&prompt); return xstrdup(r); }