mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Break out termios initialization into a separate function, from George
Nachman.
This commit is contained in:
		
							
								
								
									
										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); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Nicholas Marriott
					Nicholas Marriott