mirror of
https://github.com/tmate-io/tmate.git
synced 2024-12-25 16:19:02 +01:00
Accept tcgetattr/tcsetattr failure, fixes problems with fatal() if the
terminal disappears while locked.
This commit is contained in:
parent
b6bb350289
commit
9fc2c34a3b
9
tty.c
9
tty.c
@ -166,15 +166,13 @@ tty_start_tty(struct tty *tty)
|
||||
{
|
||||
struct termios tio;
|
||||
|
||||
if (tty->fd == -1)
|
||||
if (tty->fd == -1 || tcgetattr(tty->fd, &tty->tio) != 0)
|
||||
return;
|
||||
|
||||
setblocking(tty->fd, 0);
|
||||
|
||||
bufferevent_enable(tty->event, EV_READ|EV_WRITE);
|
||||
|
||||
if (tcgetattr(tty->fd, &tty->tio) != 0)
|
||||
fatal("tcgetattr failed");
|
||||
memcpy(&tio, &tty->tio, sizeof tio);
|
||||
tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|IMAXBEL|ISTRIP);
|
||||
tio.c_iflag |= IGNBRK;
|
||||
@ -183,9 +181,8 @@ tty_start_tty(struct tty *tty)
|
||||
ECHOPRT|ECHOKE|ECHOCTL|ISIG);
|
||||
tio.c_cc[VMIN] = 1;
|
||||
tio.c_cc[VTIME] = 0;
|
||||
if (tcsetattr(tty->fd, TCSANOW, &tio) != 0)
|
||||
fatal("tcsetattr failed");
|
||||
tcflush(tty->fd, TCIOFLUSH);
|
||||
if (tcsetattr(tty->fd, TCSANOW, &tio) == 0)
|
||||
tcflush(tty->fd, TCIOFLUSH);
|
||||
|
||||
tty_putcode(tty, TTYC_SMCUP);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user