mirror of
https://github.com/git/git
synced 2024-08-28 12:09:19 +00:00
terminal: make the code of disable_echo() reusable
We are about to introduce the function `enable_non_canonical()`, which shares almost the complete code with `disable_echo()`. Let's prepare for that, by refactoring out that shared code. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
08b1ea4c39
commit
94ac3c31f7
|
@ -32,7 +32,7 @@ static void restore_term(void)
|
|||
term_fd = -1;
|
||||
}
|
||||
|
||||
static int disable_echo(void)
|
||||
static int disable_bits(tcflag_t bits)
|
||||
{
|
||||
struct termios t;
|
||||
|
||||
|
@ -43,7 +43,7 @@ static int disable_echo(void)
|
|||
old_term = t;
|
||||
sigchain_push_common(restore_term_on_signal);
|
||||
|
||||
t.c_lflag &= ~ECHO;
|
||||
t.c_lflag &= ~bits;
|
||||
if (!tcsetattr(term_fd, TCSAFLUSH, &t))
|
||||
return 0;
|
||||
|
||||
|
@ -53,6 +53,11 @@ static int disable_echo(void)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static int disable_echo(void)
|
||||
{
|
||||
return disable_bits(ECHO);
|
||||
}
|
||||
|
||||
#elif defined(GIT_WINDOWS_NATIVE)
|
||||
|
||||
#define INPUT_PATH "CONIN$"
|
||||
|
@ -72,7 +77,7 @@ static void restore_term(void)
|
|||
hconin = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
static int disable_echo(void)
|
||||
static int disable_bits(DWORD bits)
|
||||
{
|
||||
hconin = CreateFile("CONIN$", GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_READ, NULL, OPEN_EXISTING,
|
||||
|
@ -82,7 +87,7 @@ static int disable_echo(void)
|
|||
|
||||
GetConsoleMode(hconin, &cmode);
|
||||
sigchain_push_common(restore_term_on_signal);
|
||||
if (!SetConsoleMode(hconin, cmode & (~ENABLE_ECHO_INPUT))) {
|
||||
if (!SetConsoleMode(hconin, cmode & ~bits)) {
|
||||
CloseHandle(hconin);
|
||||
hconin = INVALID_HANDLE_VALUE;
|
||||
return -1;
|
||||
|
@ -91,6 +96,12 @@ static int disable_echo(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int disable_echo(void)
|
||||
{
|
||||
return disable_bits(ENABLE_ECHO_INPUT);
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef FORCE_TEXT
|
||||
|
|
Loading…
Reference in a new issue