diff --git a/compat/mingw.c b/compat/mingw.c index e6d15a4d4003de..ecbfa6e597e4c4 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -1850,21 +1850,6 @@ int link(const char *oldpath, const char *newpath) return 0; } -char *getpass(const char *prompt) -{ - struct strbuf buf = STRBUF_INIT; - - fputs(prompt, stderr); - for (;;) { - char c = _getch(); - if (c == '\r' || c == '\n') - break; - strbuf_addch(&buf, c); - } - fputs("\n", stderr); - return strbuf_detach(&buf, NULL); -} - pid_t waitpid(pid_t pid, int *status, int options) { HANDLE h = OpenProcess(SYNCHRONIZE | PROCESS_QUERY_INFORMATION, diff --git a/compat/mingw.h b/compat/mingw.h index 8c46a5c76bf839..00ef97563b126b 100644 --- a/compat/mingw.h +++ b/compat/mingw.h @@ -56,8 +56,6 @@ struct passwd { char *pw_dir; }; -extern char *getpass(const char *prompt); - typedef void (__cdecl *sig_handler_t)(int); struct sigaction { sig_handler_t sa_handler; diff --git a/compat/terminal.c b/compat/terminal.c index 6d16c8fba0b305..53c51664d85b26 100644 --- a/compat/terminal.c +++ b/compat/terminal.c @@ -71,6 +71,26 @@ char *git_terminal_prompt(const char *prompt, int echo) return buf.buf; } +#elif defined(WIN32) + +char *git_terminal_prompt(const char *prompt, int echo) +{ + static struct strbuf buf = STRBUF_INIT; + + fputs(prompt, stderr); + strbuf_reset(&buf); + for (;;) { + int c = _getch(); + if (c == '\n' || c == '\r') + break; + if (echo) + putc(c, stderr); + strbuf_addch(&buf, c); + } + putc('\n', stderr); + return buf.buf; +} + #else char *git_terminal_prompt(const char *prompt, int echo)