|
|
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.