|
|
researchv10 Norman
/* @(#) reset_prog.c: 1.1 10/15/83 (1.36 3/18/83) */
#include "curses.ext"
#include "../local/uparm.h"
extern struct term *cur_term;
#ifdef DIOCSETT
/*
* Disable CB/UNIX virtual terminals.
* This really should be a field in the cur_term structure, but
* I didn't do it that way because I'm trying to make ex fit.
* If you're using virtual terminals on a 32 bit machine it
* probably makes sense to change it.
*/
static struct termcb new, old;
#endif
#ifdef LTILDE
static int newlmode, oldlmode;
#endif
/*
* Getting the baud rate is different on the two systems.
* In either case, a baud rate of 0 hangs up the phone.
* Since things are often initialized to 0, getting the phone
* hung up on you is a common result of a bug in your program.
* This is not very friendly, so if the baud rate is 0, we
* assume we're doing a reset_xx_mode with no def_xx_mode, and
* just don't do anything.
*/
#ifdef USG
#define BR(x) (cur_term->x.c_cflag&CBAUD)
#else
#define BR(x) (cur_term->x.sg_ispeed)
#endif
reset_prog_mode()
{
if (BR(Nttyb))
ioctl(cur_term -> Filedes,
#ifdef USG
TCSETAW,
#else
TIOCSETN,
#endif
&(cur_term->Nttyb));
# ifdef LTILDE
ioctl(cur_term -> Filedes, TIOCLGET, &oldlmode);
newlmode = oldlmode & ~LTILDE;
if (newlmode != oldlmode)
ioctl(cur_term -> Filedes, TIOCLSET, &newlmode);
# endif
#ifdef DIOCSETT
if (old.st_termt == 0)
ioctl(2, DIOCGETT, &old);
new = old;
new.st_termt = 0;
new.st_flgs |= TM_SET;
ioctl(2, DIOCSETT, &new);
#endif
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.