From 6b17f3f620d99670e915ae97f21d24cd765b7b4d Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Tue, 24 May 2011 16:40:19 +0100 Subject: [PATCH] Disable ISIG mode entirely if FLAG_CTRLC is set --- termkey.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/termkey.c b/termkey.c index 48ec164..3966d5a 100644 --- a/termkey.c +++ b/termkey.c @@ -280,10 +280,14 @@ static TermKey *termkey_new_full(int fd, int flags, size_t buffsize, int waittim termios.c_iflag &= ~(IXON|INLCR|ICRNL); termios.c_lflag &= ~(ICANON|ECHO); - termios.c_cc[VQUIT] = 0; - termios.c_cc[VSUSP] = 0; if(flags & TERMKEY_FLAG_CTRLC) - termios.c_cc[VINTR] = 0; + /* want no signal keys at all, so just disable ISIG */ + termios.c_lflag &= ~ISIG; + else { + /* Disable Ctrl-\==VQUIT and Ctrl-D==VSUSP but leave Ctrl-C as SIGINT */ + termios.c_cc[VQUIT] = 0; + termios.c_cc[VSUSP] = 0; + } tcsetattr(fd, TCSANOW, &termios); }