Annotation of 43BSD/contrib/rn/term.h, revision 1.1.1.1

1.1       root        1: /* $Header: term.h,v 4.3.1.2 85/05/13 15:52:05 lwall Exp $
                      2:  *
                      3:  * $Log:       term.h,v $
                      4:  * Revision 4.3.1.2  85/05/13  15:52:05  lwall
                      5:  * Declared devtty on TERMIO system.
                      6:  * 
                      7:  * Revision 4.3.1.1  85/05/10  11:41:24  lwall
                      8:  * Branch for patches.
                      9:  * 
                     10:  * Revision 4.3  85/05/01  11:51:36  lwall
                     11:  * Baseline for release with 4.3bsd.
                     12:  * 
                     13:  */
                     14: 
                     15: #ifdef PUSHBACK
                     16: EXT char circlebuf[PUSHSIZE];
                     17: EXT int nextin INIT(0);
                     18: EXT int nextout INIT(0);
                     19: #ifdef PENDING
                     20: #ifdef FIONREAD
                     21: EXT long iocount INIT(0);
                     22: #ifndef lint
                     23: #define input_pending() (nextin!=nextout || (ioctl(0, FIONREAD, &iocount),(int)iocount))
                     24: #else
                     25: #define input_pending() bizarre
                     26: #endif lint
                     27: #else FIONREAD
                     28: int circfill();
                     29: EXT int devtty INIT(0);
                     30: #ifndef lint
                     31: #define input_pending() (nextin!=nextout || circfill())
                     32: #else
                     33: #define input_pending() bizarre
                     34: #endif lint
                     35: #endif FIONREAD
                     36: #else PENDING
                     37: #ifndef lint
                     38: #define input_pending() (nextin!=nextout)
                     39: #else
                     40: #define input_pending() bizarre
                     41: #endif lint
                     42: #endif PENDING
                     43: #else PUSHBACK
                     44: #ifdef PENDING
                     45: #ifdef FIONREAD        /* must have FIONREAD or O_NDELAY for input_pending() */
                     46: #define read_tty(addr,size) read(0,addr,size)
                     47: #ifndef lint
                     48: #define input_pending() (ioctl(0, FIONREAD, &iocount),(int)iocount)
                     49: #else
                     50: #define input_pending() bizarre
                     51: #endif lint
                     52: EXT long iocount INIT(0);
                     53: 
                     54: #else FIONREAD
                     55: 
                     56: EXT int devtty INIT(0);
                     57: EXT bool is_input INIT(FALSE);
                     58: EXT char pending_ch INIT(0);
                     59: #ifndef lint
                     60: #define input_pending() (is_input || (is_input=read(devtty,&pending_ch,1)))
                     61: #else
                     62: #define input_pending() bizarre
                     63: #endif lint
                     64: #endif FIONREAD
                     65: #else PENDING
                     66: #define read_tty(addr,size) read(0,addr,size)
                     67: #define input_pending() (FALSE)
                     68: #endif PENDING
                     69: #endif PUSHBACK
                     70: 
                     71: /* stuff wanted by terminal mode diddling routines */
                     72: 
                     73: #ifdef TERMIO
                     74: EXT struct termio _tty, _oldtty;
                     75: #else
                     76: EXT struct sgttyb _tty;
                     77: EXT int _res_flg INIT(0);
                     78: #endif
                     79: 
                     80: EXT int _tty_ch INIT(2);
                     81: EXT bool bizarre INIT(FALSE);                  /* do we need to restore terminal? */
                     82: 
                     83: /* terminal mode diddling routines */
                     84: 
                     85: #ifdef TERMIO
                     86: 
                     87: #define crmode() ((bizarre=1),_tty.c_lflag &=~ICANON,_tty.c_cc[VMIN] = 1,ioctl(_tty_ch,TCSETAF,&_tty))
                     88: #define nocrmode() ((bizarre=1),_tty.c_lflag |= ICANON,_tty.c_cc[VEOF] = CEOF,stty(_tty_ch,&_tty))
                     89: #define echo()  ((bizarre=1),_tty.c_lflag |= ECHO, ioctl(_tty_ch, TCSETA, &_tty))
                     90: #define noecho() ((bizarre=1),_tty.c_lflag &=~ECHO, ioctl(_tty_ch, TCSETA, &_tty))
                     91: #define nl()    ((bizarre=1),_tty.c_iflag |= ICRNL,_tty.c_oflag |= ONLCR,ioctl(_tty_ch, TCSETAW, &_tty))
                     92: #define nonl()  ((bizarre=1),_tty.c_iflag &=~ICRNL,_tty.c_oflag &=~ONLCR,ioctl(_tty_ch, TCSETAW, &_tty))
                     93: #define        savetty() (ioctl(_tty_ch, TCGETA, &_oldtty),ioctl(_tty_ch, TCGETA, &_tty))
                     94: #define        resetty() ((bizarre=0),ioctl(_tty_ch, TCSETAF, &_oldtty))
                     95: #define unflush_output()
                     96: 
                     97: #else
                     98: 
                     99: #define raw()   ((bizarre=1),_tty.sg_flags|=RAW, stty(_tty_ch,&_tty))
                    100: #define noraw()         ((bizarre=1),_tty.sg_flags&=~RAW,stty(_tty_ch,&_tty))
                    101: #define crmode() ((bizarre=1),_tty.sg_flags |= CBREAK, stty(_tty_ch,&_tty))
                    102: #define nocrmode() ((bizarre=1),_tty.sg_flags &= ~CBREAK,stty(_tty_ch,&_tty))
                    103: #define echo()  ((bizarre=1),_tty.sg_flags |= ECHO, stty(_tty_ch, &_tty))
                    104: #define noecho() ((bizarre=1),_tty.sg_flags &= ~ECHO, stty(_tty_ch, &_tty))
                    105: #define nl()    ((bizarre=1),_tty.sg_flags |= CRMOD,stty(_tty_ch, &_tty))
                    106: #define nonl()  ((bizarre=1),_tty.sg_flags &= ~CRMOD, stty(_tty_ch, &_tty))
                    107: #define        savetty() (gtty(_tty_ch, &_tty), _res_flg = _tty.sg_flags)
                    108: #define        resetty() ((bizarre=0),_tty.sg_flags = _res_flg, stty(_tty_ch, &_tty))
                    109: #ifdef LFLUSHO
                    110: #ifndef lint
                    111: EXT int lflusho INIT(LFLUSHO);
                    112: #else
                    113: EXT long lflusho INIT(LFLUSHO);
                    114: #endif lint
                    115: #define unflush_output() (ioctl(_tty_ch,TIOCLBIC,&lflusho))
                    116: #else
                    117: #define unflush_output()
                    118: #endif LFLUSHO
                    119: #endif TERMIO
                    120: 
                    121: #ifdef TIOCSTI
                    122: #ifdef lint
                    123: #define forceme(c) ioctl(_tty_ch,TIOCSTI,Null(long*))  /* ghad! */
                    124: #else
                    125: #define forceme(c) ioctl(_tty_ch,TIOCSTI,c) /* pass character in " " */
                    126: #endif lint
                    127: #else
                    128: #define forceme(c)
                    129: #endif
                    130: 
                    131: /* termcap stuff */
                    132: 
                    133: /*
                    134:  * NOTE: if you don't have termlib you'll either have to define these strings
                    135:  *    and the tputs routine, or you'll have to redefine the macros below
                    136:  */
                    137: 
                    138: #ifdef HAVETERMLIB
                    139: EXT char *BC INIT(Nullch);             /* backspace character */
                    140: EXT char *UP INIT(Nullch);             /* move cursor up one line */
                    141: EXT char *CR INIT(Nullch);             /* get to left margin, somehow */
                    142: EXT char *VB INIT(Nullch);             /* visible bell */
                    143: EXT char *CL INIT(Nullch);             /* home and clear screen */
                    144: EXT char *CE INIT(Nullch);             /* clear to end of line */
                    145: #ifdef CLEAREOL
                    146: EXT char *CM INIT(Nullch);             /* cursor motion -- PWP */
                    147: EXT char *HO INIT(Nullch);             /* home cursor -- PWP */
                    148: EXT char *CD INIT(Nullch);             /* clear to end of display -- PWP */
                    149: #endif CLEAREOL
                    150: EXT char *SO INIT(Nullch);             /* begin standout mode */
                    151: EXT char *SE INIT(Nullch);             /* end standout mode */
                    152: EXT int SG INIT(0);            /* blanks left by SO and SE */
                    153: EXT char *US INIT(Nullch);             /* start underline mode */
                    154: EXT char *UE INIT(Nullch);             /* end underline mode */
                    155: EXT char *UC INIT(Nullch);             /* underline a character, if that's how it's done */
                    156: EXT int UG INIT(0);            /* blanks left by US and UE */
                    157: EXT bool AM INIT(FALSE);               /* does terminal have automatic margins? */
                    158: EXT bool XN INIT(FALSE);               /* does it eat 1st newline after automatic wrap? */
                    159: EXT char PC INIT(0);           /* pad character for use by tputs() */
                    160: EXT short ospeed INIT(0);      /* terminal output speed, for use by tputs() */
                    161: EXT int LINES INIT(0), COLS INIT(0);   /* size of screen */
                    162: EXT int just_a_sec INIT(960);                  /* 1 sec at current baud rate */
                    163:                                        /* (number of nulls) */
                    164: 
                    165: /* define a few handy macros */
                    166: 
                    167: #define backspace() tputs(BC,0,putchr) FLUSH
                    168: #define clear() tputs(CL,LINES,putchr) FLUSH
                    169: #define erase_eol() tputs(CE,1,putchr) FLUSH
                    170: #ifdef CLEAREOL
                    171: #define clear_rest() tputs(CD,LINES,putchr) FLUSH      /* PWP */
                    172: #define maybe_eol() if(erase_screen&&can_home_clear)tputs(CE,1,putchr) FLUSH
                    173: #endif CLEAREOL
                    174: #define underline() tputs(US,1,putchr) FLUSH
                    175: #define un_underline() tputs(UE,1,putchr) FLUSH
                    176: #define underchar() tputs(UC,0,putchr) FLUSH
                    177: #define standout() tputs(SO,1,putchr) FLUSH
                    178: #define un_standout() tputs(SE,1,putchr) FLUSH
                    179: #define up_line() tputs(UP,1,putchr) FLUSH
                    180: #define carriage_return() tputs(CR,1,putchr) FLUSH
                    181: #define dingaling() tputs(VB,1,putchr) FLUSH
                    182: #else
                    183:   ????????             /* up to you */
                    184: #endif
                    185: 
                    186: EXT int page_line INIT(1);     /* line number for paging in print_line (origin 1) */
                    187: 
                    188: void   term_init();
                    189: void   term_set();
                    190: #ifdef PUSHBACK
                    191: void   pushchar();
                    192: void   mac_init();
                    193: void   mac_line();
                    194: void   show_macros();
                    195: #endif
                    196: char   putchr();       /* routine for tputs to call */
                    197: bool   finish_command();
                    198: void   eat_typeahead();
                    199: void   settle_down();
                    200: #ifndef read_tty
                    201:     int                read_tty();
                    202: #endif
                    203: void   underprint();
                    204: #ifdef NOFIREWORKS
                    205:     void       no_sofire();
                    206:     void       no_ulfire();
                    207: #endif
                    208: void   getcmd();
                    209: int    get_anything();
                    210: void   in_char();
                    211: int    print_lines();
                    212: void   page_init();
                    213: void   pad();
                    214: void   printcmd();
                    215: void   rubout();
                    216: void   reprint();
                    217: #ifdef CLEAREOL
                    218: void   home_cursor();
                    219: #endif CLEAREOL

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.