fix
This commit is contained in:
@ -99,6 +99,37 @@ void set_fd_raw(int fd) {
|
|||||||
throw std::runtime_error(io_error("Cannot read tty attributes for", std::to_string(fd)));
|
throw std::runtime_error(io_error("Cannot read tty attributes for", std::to_string(fd)));
|
||||||
}
|
}
|
||||||
::cfmakeraw(&tio);
|
::cfmakeraw(&tio);
|
||||||
|
tio.c_cc[VINTR] = _POSIX_VDISABLE;
|
||||||
|
tio.c_cc[VQUIT] = _POSIX_VDISABLE;
|
||||||
|
tio.c_cc[VERASE] = _POSIX_VDISABLE;
|
||||||
|
tio.c_cc[VKILL] = _POSIX_VDISABLE;
|
||||||
|
tio.c_cc[VEOF] = _POSIX_VDISABLE;
|
||||||
|
tio.c_cc[VTIME] = 0;
|
||||||
|
tio.c_cc[VMIN] = 1;
|
||||||
|
#ifdef VSWTC
|
||||||
|
tio.c_cc[VSWTC] = _POSIX_VDISABLE;
|
||||||
|
#endif
|
||||||
|
tio.c_cc[VSTART] = _POSIX_VDISABLE;
|
||||||
|
tio.c_cc[VSTOP] = _POSIX_VDISABLE;
|
||||||
|
tio.c_cc[VSUSP] = _POSIX_VDISABLE;
|
||||||
|
#ifdef VEOL
|
||||||
|
tio.c_cc[VEOL] = _POSIX_VDISABLE;
|
||||||
|
#endif
|
||||||
|
#ifdef VREPRINT
|
||||||
|
tio.c_cc[VREPRINT] = _POSIX_VDISABLE;
|
||||||
|
#endif
|
||||||
|
#ifdef VDISCARD
|
||||||
|
tio.c_cc[VDISCARD] = _POSIX_VDISABLE;
|
||||||
|
#endif
|
||||||
|
#ifdef VWERASE
|
||||||
|
tio.c_cc[VWERASE] = _POSIX_VDISABLE;
|
||||||
|
#endif
|
||||||
|
#ifdef VLNEXT
|
||||||
|
tio.c_cc[VLNEXT] = _POSIX_VDISABLE;
|
||||||
|
#endif
|
||||||
|
#ifdef VEOL2
|
||||||
|
tio.c_cc[VEOL2] = _POSIX_VDISABLE;
|
||||||
|
#endif
|
||||||
if (::tcsetattr(fd, TCSANOW, &tio) != 0) {
|
if (::tcsetattr(fd, TCSANOW, &tio) != 0) {
|
||||||
throw std::runtime_error(io_error("Cannot apply raw tty attributes to", std::to_string(fd)));
|
throw std::runtime_error(io_error("Cannot apply raw tty attributes to", std::to_string(fd)));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user