From ebb6a6dfa3a6f294b5ccf28aaf85614d02ff1c29 Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Fri, 10 Oct 1980 08:46:08 -0800 Subject: [PATCH] new version, substantial cleanup and saner SCCS-vsn: usr.bin/tset/reset.c 4.2 --- usr/src/usr.bin/tset/reset.c | 45 +++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/usr/src/usr.bin/tset/reset.c b/usr/src/usr.bin/tset/reset.c index 1e1fd2bb17..4f964ecc01 100644 --- a/usr/src/usr.bin/tset/reset.c +++ b/usr/src/usr.bin/tset/reset.c @@ -1,33 +1,46 @@ -static char *sccsid = "@(#)reset.c 4.1 (Berkeley) %G%"; +static char *sccsid = "@(#)reset.c 4.2 (Berkeley) %G%"; /* - * reset - set the teletype mode bits to be sensible - * - * Kurt Shoens - * - * Very useful after crapping out in raw. - * Modified by Mark Horton to know about tchars - * and to not mess with peoples chars unless they are null. + * reset */ #include -#define chk(val, dft) (val==0 ? dft : val) + +#define CTRL(x) ('x'&037) main() { struct sgttyb buf; struct tchars tbuf; + struct ltchars ltbuf; gtty(2, &buf); ioctl(2, TIOCGETC, &tbuf); + ioctl(2, TIOCGLTC, <buf); buf.sg_flags &= ~(RAW|CBREAK|VTDELAY|ALLDELAY); buf.sg_flags |= XTABS|ECHO|CRMOD|ANYP; - buf.sg_erase = chk(buf.sg_erase, '\08'); /* ^H */ - buf.sg_kill = chk(buf.sg_kill, '\30'); /* ^X */ - tbuf.t_intrc = chk(tbuf.t_intrc, '\177'); /* ^? */ - tbuf.t_quitc = chk(tbuf.t_quitc, '\34'); /* ^\ */ - tbuf.t_startc = chk(tbuf.t_startc, '\22'); /* ^Q */ - tbuf.t_stopc = chk(tbuf.t_stopc, '\24'); /* ^S */ - tbuf.t_eofc = chk(tbuf.t_eofc, '\4'); /* ^D */ + reset(&buf.sg_erase, CTRL(h)); + reset(&buf.sg_kill, '@'); + reset(&tbuf.t_intrc, 0177); + reset(&tbuf.t_quitc, CTRL(\\\\)); + reset(&tbuf.t_startc, CTRL(q)); + reset(&tbuf.t_stopc, CTRL(s)); + reset(&tbuf.t_eofc, CTRL(d)); + reset(<buf.t_suspc, CTRL(z)); + reset(<buf.t_dsuspc, CTRL(y)); + reset(<buf.t_rprntc, CTRL(r)); + reset(<buf.t_flushc, CTRL(o)); + reset(<buf.t_lnextc, CTRL(v)); + reset(<buf.t_werasc, CTRL(w)); /* brkc is left alone */ ioctl(2, TIOCSETN, &buf); ioctl(2, TIOCSETC, &tbuf); + ioctl(2, TIOCSLTC, <buf); +} + +reset(cp, def) + char *cp; + int def; +{ + + if (*cp == 0 || (*cp&0377)==0377) + *cp = def; } -- 2.20.1