diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2011-01-29 08:39:43 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2011-01-29 08:39:43 +0000 |
commit | 9fc2c34a3b794b6724c1e3fc96f55ee199286c44 (patch) | |
tree | 819b9559f697d7ecd68264ac0ce5f87f0a194a27 /tty.c | |
parent | b6bb350289f9eec1c6486ef356033e6f2b542ad0 (diff) | |
download | rtmux-9fc2c34a3b794b6724c1e3fc96f55ee199286c44.tar.gz rtmux-9fc2c34a3b794b6724c1e3fc96f55ee199286c44.tar.bz2 rtmux-9fc2c34a3b794b6724c1e3fc96f55ee199286c44.zip |
Accept tcgetattr/tcsetattr failure, fixes problems with fatal() if the
terminal disappears while locked.
Diffstat (limited to 'tty.c')
-rw-r--r-- | tty.c | 9 |
1 files changed, 3 insertions, 6 deletions
@@ -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); |