Module Name: src Committed By: christos Date: Mon May 19 17:14:41 UTC 2014
Modified Files: src/lib/libedit: tty.c Log Message: Factor out some common code (more to be done) from PR/48821 To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/lib/libedit/tty.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libedit/tty.c diff -u src/lib/libedit/tty.c:1.42 src/lib/libedit/tty.c:1.43 --- src/lib/libedit/tty.c:1.42 Tue May 15 11:59:01 2012 +++ src/lib/libedit/tty.c Mon May 19 13:14:41 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: tty.c,v 1.42 2012/05/15 15:59:01 christos Exp $ */ +/* $NetBSD: tty.c,v 1.43 2014/05/19 17:14:41 christos Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -37,7 +37,7 @@ #if 0 static char sccsid[] = "@(#)tty.c 8.1 (Berkeley) 6/4/93"; #else -__RCSID("$NetBSD: tty.c,v 1.42 2012/05/15 15:59:01 christos Exp $"); +__RCSID("$NetBSD: tty.c,v 1.43 2014/05/19 17:14:41 christos Exp $"); #endif #endif /* not lint && not SCCSID */ @@ -459,6 +459,7 @@ private void tty__getchar(struct termios private void tty__setchar(struct termios *, unsigned char *); private speed_t tty__getspeed(struct termios *); private int tty_setup(EditLine *); +private void tty_setup_flags(EditLine *, struct termios *, int); #define t_qu t_ts @@ -517,17 +518,7 @@ tty_setup(EditLine *el) el->el_tty.t_tabs = tty__gettabs(&el->el_tty.t_ex); el->el_tty.t_eight = tty__geteightbit(&el->el_tty.t_ex); - el->el_tty.t_ex.c_iflag &= ~el->el_tty.t_t[EX_IO][MD_INP].t_clrmask; - el->el_tty.t_ex.c_iflag |= el->el_tty.t_t[EX_IO][MD_INP].t_setmask; - - el->el_tty.t_ex.c_oflag &= ~el->el_tty.t_t[EX_IO][MD_OUT].t_clrmask; - el->el_tty.t_ex.c_oflag |= el->el_tty.t_t[EX_IO][MD_OUT].t_setmask; - - el->el_tty.t_ex.c_cflag &= ~el->el_tty.t_t[EX_IO][MD_CTL].t_clrmask; - el->el_tty.t_ex.c_cflag |= el->el_tty.t_t[EX_IO][MD_CTL].t_setmask; - - el->el_tty.t_ex.c_lflag &= ~el->el_tty.t_t[EX_IO][MD_LIN].t_clrmask; - el->el_tty.t_ex.c_lflag |= el->el_tty.t_t[EX_IO][MD_LIN].t_setmask; + tty_setup_flags(el, &el->el_tty.t_ex, EX_IO); /* * Reset the tty chars to reasonable defaults @@ -562,17 +553,7 @@ tty_setup(EditLine *el) } } - el->el_tty.t_ed.c_iflag &= ~el->el_tty.t_t[ED_IO][MD_INP].t_clrmask; - el->el_tty.t_ed.c_iflag |= el->el_tty.t_t[ED_IO][MD_INP].t_setmask; - - el->el_tty.t_ed.c_oflag &= ~el->el_tty.t_t[ED_IO][MD_OUT].t_clrmask; - el->el_tty.t_ed.c_oflag |= el->el_tty.t_t[ED_IO][MD_OUT].t_setmask; - - el->el_tty.t_ed.c_cflag &= ~el->el_tty.t_t[ED_IO][MD_CTL].t_clrmask; - el->el_tty.t_ed.c_cflag |= el->el_tty.t_t[ED_IO][MD_CTL].t_setmask; - - el->el_tty.t_ed.c_lflag &= ~el->el_tty.t_t[ED_IO][MD_LIN].t_clrmask; - el->el_tty.t_ed.c_lflag |= el->el_tty.t_t[ED_IO][MD_LIN].t_setmask; + tty_setup_flags(el, &el->el_tty.t_ed, ED_IO); tty__setchar(&el->el_tty.t_ed, el->el_tty.t_c[ED_IO]); tty_bind_char(el, 1); @@ -1129,17 +1110,7 @@ tty_quotemode(EditLine *el) el->el_tty.t_qu = el->el_tty.t_ed; - el->el_tty.t_qu.c_iflag &= ~el->el_tty.t_t[QU_IO][MD_INP].t_clrmask; - el->el_tty.t_qu.c_iflag |= el->el_tty.t_t[QU_IO][MD_INP].t_setmask; - - el->el_tty.t_qu.c_oflag &= ~el->el_tty.t_t[QU_IO][MD_OUT].t_clrmask; - el->el_tty.t_qu.c_oflag |= el->el_tty.t_t[QU_IO][MD_OUT].t_setmask; - - el->el_tty.t_qu.c_cflag &= ~el->el_tty.t_t[QU_IO][MD_CTL].t_clrmask; - el->el_tty.t_qu.c_cflag |= el->el_tty.t_t[QU_IO][MD_CTL].t_setmask; - - el->el_tty.t_qu.c_lflag &= ~el->el_tty.t_t[QU_IO][MD_LIN].t_clrmask; - el->el_tty.t_qu.c_lflag |= el->el_tty.t_t[QU_IO][MD_LIN].t_setmask; + tty_setup_flags(el, &el->el_tty.t_qu, QU_IO); if (tty_setty(el, TCSADRAIN, &el->el_tty.t_qu) == -1) { #ifdef DEBUG_TTY @@ -1357,3 +1328,21 @@ tty_printchar(EditLine *el, unsigned cha (void) fprintf(el->el_errfile, "\n"); } #endif /* notyet */ + + +private void +tty_setup_flags(EditLine *el, struct termios *tios, int mode) +{ + tios->c_iflag &= ~el->el_tty.t_t[mode][MD_INP].t_clrmask; + tios->c_iflag |= el->el_tty.t_t[mode][MD_INP].t_setmask; + + tios->c_oflag &= ~el->el_tty.t_t[mode][MD_OUT].t_clrmask; + tios->c_oflag |= el->el_tty.t_t[mode][MD_OUT].t_setmask; + + tios->c_cflag &= ~el->el_tty.t_t[mode][MD_CTL].t_clrmask; + tios->c_cflag |= el->el_tty.t_t[mode][MD_CTL].t_setmask; + + tios->c_lflag &= ~el->el_tty.t_t[mode][MD_LIN].t_clrmask; + tios->c_lflag |= el->el_tty.t_t[mode][MD_LIN].t_setmask; +} +