+/*
+ * 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.
+ */
+#include <sgtty.h>
+#define chk(val, dft) (val==0 ? dft : val)
+
+main()
+{
+ struct sgttyb buf;
+ struct tchars tbuf;
+
+ gtty(2, &buf);
+ ioctl(2, TIOCGETC, &tbuf);
+ 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 */
+ /* brkc is left alone */
+ ioctl(2, TIOCSETN, &buf);
+ ioctl(2, TIOCSETC, &tbuf);
+}