mirror of
https://github.com/tmux/tmux.git
synced 2024-11-16 09:28:51 +00:00
Break out termios initialization into a separate function, from George
Nachman.
This commit is contained in:
parent
164e85cca7
commit
889fe42e11
1
tmux.h
1
tmux.h
@ -1444,6 +1444,7 @@ void environ_update(const char *, struct environ *, struct environ *);
|
|||||||
void environ_push(struct environ *);
|
void environ_push(struct environ *);
|
||||||
|
|
||||||
/* tty.c */
|
/* tty.c */
|
||||||
|
void tty_init_termios(int, struct termios *, struct bufferevent *);
|
||||||
void tty_raw(struct tty *, const char *);
|
void tty_raw(struct tty *, const char *);
|
||||||
void tty_attributes(struct tty *, const struct grid_cell *);
|
void tty_attributes(struct tty *, const struct grid_cell *);
|
||||||
void tty_reset(struct tty *);
|
void tty_reset(struct tty *);
|
||||||
|
21
tty.c
21
tty.c
@ -175,18 +175,19 @@ tty_error_callback(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
tty_start_tty(struct tty *tty)
|
tty_init_termios(int fd, struct termios *orig_tio, struct bufferevent *bufev)
|
||||||
{
|
{
|
||||||
struct termios tio;
|
struct termios tio;
|
||||||
|
|
||||||
if (tty->fd == -1 || tcgetattr(tty->fd, &tty->tio) != 0)
|
if (fd == -1 || tcgetattr(fd, orig_tio) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
setblocking(tty->fd, 0);
|
setblocking(fd, 0);
|
||||||
|
|
||||||
bufferevent_enable(tty->event, EV_READ|EV_WRITE);
|
if (bufev != NULL)
|
||||||
|
bufferevent_enable(bufev, EV_READ|EV_WRITE);
|
||||||
|
|
||||||
memcpy(&tio, &tty->tio, sizeof tio);
|
memcpy(&tio, orig_tio, sizeof tio);
|
||||||
tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|IMAXBEL|ISTRIP);
|
tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|IMAXBEL|ISTRIP);
|
||||||
tio.c_iflag |= IGNBRK;
|
tio.c_iflag |= IGNBRK;
|
||||||
tio.c_oflag &= ~(OPOST|ONLCR|OCRNL|ONLRET);
|
tio.c_oflag &= ~(OPOST|ONLCR|OCRNL|ONLRET);
|
||||||
@ -194,8 +195,14 @@ tty_start_tty(struct tty *tty)
|
|||||||
ECHOPRT|ECHOKE|ECHOCTL|ISIG);
|
ECHOPRT|ECHOKE|ECHOCTL|ISIG);
|
||||||
tio.c_cc[VMIN] = 1;
|
tio.c_cc[VMIN] = 1;
|
||||||
tio.c_cc[VTIME] = 0;
|
tio.c_cc[VTIME] = 0;
|
||||||
if (tcsetattr(tty->fd, TCSANOW, &tio) == 0)
|
if (tcsetattr(fd, TCSANOW, &tio) == 0)
|
||||||
tcflush(tty->fd, TCIOFLUSH);
|
tcflush(fd, TCIOFLUSH);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tty_start_tty(struct tty *tty)
|
||||||
|
{
|
||||||
|
tty_init_termios(tty->fd, &tty->tio, tty->event);
|
||||||
|
|
||||||
tty_putcode(tty, TTYC_SMCUP);
|
tty_putcode(tty, TTYC_SMCUP);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user