| 1 | /* |
| 2 | * reset - set the teletype mode bits to be sensible |
| 3 | * |
| 4 | * Kurt Shoens |
| 5 | * |
| 6 | * Very useful after crapping out in raw. |
| 7 | * Modified by Mark Horton to know about tchars |
| 8 | * and to not mess with peoples chars unless they are null. |
| 9 | */ |
| 10 | #include <sgtty.h> |
| 11 | #define chk(val, dft) (val==0 ? dft : val) |
| 12 | |
| 13 | main() |
| 14 | { |
| 15 | struct sgttyb buf; |
| 16 | struct tchars tbuf; |
| 17 | |
| 18 | gtty(2, &buf); |
| 19 | ioctl(2, TIOCGETC, &tbuf); |
| 20 | buf.sg_flags &= ~(RAW|CBREAK|VTDELAY|ALLDELAY); |
| 21 | buf.sg_flags |= XTABS|ECHO|CRMOD|ANYP; |
| 22 | buf.sg_erase = chk(buf.sg_erase, '\08'); /* ^H */ |
| 23 | buf.sg_kill = chk(buf.sg_kill, '\30'); /* ^X */ |
| 24 | tbuf.t_intrc = chk(tbuf.t_intrc, '\177'); /* ^? */ |
| 25 | tbuf.t_quitc = chk(tbuf.t_quitc, '\34'); /* ^\ */ |
| 26 | tbuf.t_startc = chk(tbuf.t_startc, '\22'); /* ^Q */ |
| 27 | tbuf.t_stopc = chk(tbuf.t_stopc, '\24'); /* ^S */ |
| 28 | tbuf.t_eofc = chk(tbuf.t_eofc, '\4'); /* ^D */ |
| 29 | /* brkc is left alone */ |
| 30 | ioctl(2, TIOCSETN, &buf); |
| 31 | ioctl(2, TIOCSETC, &tbuf); |
| 32 | } |