diff --git a/cmd/waiter/rawmode_defs.go b/cmd/waiter/rawmode_defs.go index 4f147aa..3301601 100644 --- a/cmd/waiter/rawmode_defs.go +++ b/cmd/waiter/rawmode_defs.go @@ -15,4 +15,7 @@ const ( TCSETS = 0x5402 ICANON = 0x2 ECHO = 0x8 + ISIG = 0x1 + VMIN = 6 + VTIME = 5 ) diff --git a/cmd/waiter/rawmode_linux.go b/cmd/waiter/rawmode_linux.go index 5cb92c6..692d931 100644 --- a/cmd/waiter/rawmode_linux.go +++ b/cmd/waiter/rawmode_linux.go @@ -13,7 +13,9 @@ func setRawMode(fd int) (func(), error) { return func() {}, err } new := old - new.Lflag &^= ICANON | ECHO + new.Lflag &^= ICANON | ECHO | ISIG + new.Cc[VMIN] = 1 + new.Cc[VTIME] = 0 if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), TCSETS, uintptr(unsafe.Pointer(&new))); err != 0 { return func() {}, err }