diff --git a/src/ttynvt.c b/src/ttynvt.c index ab26eb8..3938675 100644 --- a/src/ttynvt.c +++ b/src/ttynvt.c @@ -787,7 +787,7 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg, ttynvt_t *tty = (ttynvt_t *) (uintptr_t) info->fh; struct termios2 *tio = &tty->tio; struct winsize ws; - unsigned int tiocm = 0; + unsigned int tiocm, baud; int mcr; int val; int res; @@ -805,17 +805,18 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg, case TCSETS: CHECK_BUF_IN(sizeof(struct termios)); memcpy(tio, in_buf, in_bufsz); - byte4 = htonl(_tio_baud(tio)); + baud = _tio_baud(tio); goto do_tcset; case TCSETSF2: case TCSETSW2: case TCSETS2: CHECK_BUF_IN(sizeof(struct termios2)); memcpy(tio, in_buf, in_bufsz); - byte4 = htonl(_tio2_baud(tio)); + baud = _tio2_baud(tio); goto do_tcset; do_tcset: /* BEWARE of termios/termios2 buf structure difference! */ + byte4 = htonl(baud); telnet_rfc2217_cfg(tty->tn, TNS_SET_BAUDRATE, &byte4, 4); byte = _tio_csize(tio); @@ -838,7 +839,7 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg, telnet_rfc2217_ctl(tty->tn, TNS_CTL_NOFLOW); } - if (!(tty->cmcr & TIOCM_DTR) && _tio_baud(tio) != 0) + if (!(tty->cmcr & TIOCM_DTR) && baud != 0) { tty->cmcr |= TIOCM_DTR; telnet_rfc2217_ctl(tty->tn, TNS_CTL_DTR_ON);