]> git.ipfire.org Git - thirdparty/git.git/commitdiff
terminal: make the code of disable_echo() reusable
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Tue, 14 Jan 2020 18:43:47 +0000 (18:43 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 15 Jan 2020 20:06:17 +0000 (12:06 -0800)
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>
compat/terminal.c

index fa13ee672db33ef2fbcc16295230b99aa9d4f595..1fb40b3a0a9950c46f9800eb3d32bb48953cb582 100644 (file)
@@ -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 @@ error:
        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