|
|
1.1 root 1: /* @(#) reset_prog.c: 1.1 10/15/83 (1.36 3/18/83) */
2: #include "curses.ext"
3: #include "../local/uparm.h"
4:
5: extern struct term *cur_term;
6:
7: #ifdef DIOCSETT
8: /*
9: * Disable CB/UNIX virtual terminals.
10: * This really should be a field in the cur_term structure, but
11: * I didn't do it that way because I'm trying to make ex fit.
12: * If you're using virtual terminals on a 32 bit machine it
13: * probably makes sense to change it.
14: */
15: static struct termcb new, old;
16: #endif
17: #ifdef LTILDE
18: static int newlmode, oldlmode;
19: #endif
20:
21: /*
22: * Getting the baud rate is different on the two systems.
23: * In either case, a baud rate of 0 hangs up the phone.
24: * Since things are often initialized to 0, getting the phone
25: * hung up on you is a common result of a bug in your program.
26: * This is not very friendly, so if the baud rate is 0, we
27: * assume we're doing a reset_xx_mode with no def_xx_mode, and
28: * just don't do anything.
29: */
30: #ifdef USG
31: #define BR(x) (cur_term->x.c_cflag&CBAUD)
32: #else
33: #define BR(x) (cur_term->x.sg_ispeed)
34: #endif
35:
36: reset_prog_mode()
37: {
38: if (BR(Nttyb))
39: ioctl(cur_term -> Filedes,
40: #ifdef USG
41: TCSETAW,
42: #else
43: TIOCSETN,
44: #endif
45: &(cur_term->Nttyb));
46: # ifdef LTILDE
47: ioctl(cur_term -> Filedes, TIOCLGET, &oldlmode);
48: newlmode = oldlmode & ~LTILDE;
49: if (newlmode != oldlmode)
50: ioctl(cur_term -> Filedes, TIOCLSET, &newlmode);
51: # endif
52: #ifdef DIOCSETT
53: if (old.st_termt == 0)
54: ioctl(2, DIOCGETT, &old);
55: new = old;
56: new.st_termt = 0;
57: new.st_flgs |= TM_SET;
58: ioctl(2, DIOCSETT, &new);
59: #endif
60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.