1*7dd7cddfSDavid du Colombier /* 2*7dd7cddfSDavid du Colombier tty.h -- centralized definitions for a variety of terminal interfaces 3*7dd7cddfSDavid du Colombier 4*7dd7cddfSDavid du Colombier created by DPK, Oct. 1986 5*7dd7cddfSDavid du Colombier 6*7dd7cddfSDavid du Colombier Rearranged to work with autoconf, added TTY_state, get_tty/set_tty 7*7dd7cddfSDavid du Colombier Michael Rendell, May '94 8*7dd7cddfSDavid du Colombier 9*7dd7cddfSDavid du Colombier last edit: 30-Jul-1987 D A Gwyn 10*7dd7cddfSDavid du Colombier */ 11*7dd7cddfSDavid du Colombier /* $Id$ */ 12*7dd7cddfSDavid du Colombier 13*7dd7cddfSDavid du Colombier /* some useful #defines */ 14*7dd7cddfSDavid du Colombier #ifdef EXTERN 15*7dd7cddfSDavid du Colombier # define I__(i) = i 16*7dd7cddfSDavid du Colombier #else 17*7dd7cddfSDavid du Colombier # define I__(i) 18*7dd7cddfSDavid du Colombier # define EXTERN extern 19*7dd7cddfSDavid du Colombier # define EXTERN_DEFINED 20*7dd7cddfSDavid du Colombier #endif 21*7dd7cddfSDavid du Colombier 22*7dd7cddfSDavid du Colombier /* Don't know of a system on which including sys/ioctl.h with termios.h 23*7dd7cddfSDavid du Colombier * causes problems. If there is one, these lines need to be deleted and 24*7dd7cddfSDavid du Colombier * aclocal.m4 needs to have stuff un-commented. 25*7dd7cddfSDavid du Colombier */ 26*7dd7cddfSDavid du Colombier #ifdef SYS_IOCTL_WITH_TERMIOS 27*7dd7cddfSDavid du Colombier # define SYS_IOCTL_WITH_TERMIOS 28*7dd7cddfSDavid du Colombier #endif /* SYS_IOCTL_WITH_TERMIOS */ 29*7dd7cddfSDavid du Colombier #ifdef SYS_IOCTL_WITH_TERMIO 30*7dd7cddfSDavid du Colombier # define SYS_IOCTL_WITH_TERMIO 31*7dd7cddfSDavid du Colombier #endif /* SYS_IOCTL_WITH_TERMIO */ 32*7dd7cddfSDavid du Colombier 33*7dd7cddfSDavid du Colombier #ifdef HAVE_TERMIOS_H 34*7dd7cddfSDavid du Colombier # include <termios.h> 35*7dd7cddfSDavid du Colombier # ifdef SYS_IOCTL_WITH_TERMIOS 36*7dd7cddfSDavid du Colombier # if !(defined(sun) && !defined(__svr4__)) /* too many warnings on sunos */ 37*7dd7cddfSDavid du Colombier /* Need to include sys/ioctl.h on some systems to get the TIOCGWINSZ 38*7dd7cddfSDavid du Colombier * stuff (eg, digital unix). 39*7dd7cddfSDavid du Colombier */ 40*7dd7cddfSDavid du Colombier # include <sys/ioctl.h> 41*7dd7cddfSDavid du Colombier # endif /* !(sun && !__svr4__) */ 42*7dd7cddfSDavid du Colombier # endif /* SYS_IOCTL_WITH_TERMIOS */ 43*7dd7cddfSDavid du Colombier typedef struct termios TTY_state; 44*7dd7cddfSDavid du Colombier #else 45*7dd7cddfSDavid du Colombier # ifdef HAVE_TERMIO_H 46*7dd7cddfSDavid du Colombier # include <termio.h> 47*7dd7cddfSDavid du Colombier # ifdef SYS_IOCTL_WITH_TERMIO 48*7dd7cddfSDavid du Colombier # include <sys/ioctl.h> /* see comment above in termios stuff */ 49*7dd7cddfSDavid du Colombier # endif /* SYS_IOCTL_WITH_TERMIO */ 50*7dd7cddfSDavid du Colombier # if _BSD_SYSV /* BRL UNIX System V emulation */ 51*7dd7cddfSDavid du Colombier # ifndef NTTYDISC 52*7dd7cddfSDavid du Colombier # define TIOCGETD _IOR( 't', 0, int ) 53*7dd7cddfSDavid du Colombier # define TIOCSETD _IOW( 't', 1, int ) 54*7dd7cddfSDavid du Colombier # define NTTYDISC 2 55*7dd7cddfSDavid du Colombier # endif 56*7dd7cddfSDavid du Colombier # ifndef TIOCSTI 57*7dd7cddfSDavid du Colombier # define TIOCSTI _IOW( 't', 114, char ) 58*7dd7cddfSDavid du Colombier # endif 59*7dd7cddfSDavid du Colombier # ifndef TIOCSPGRP 60*7dd7cddfSDavid du Colombier # define TIOCSPGRP _IOW( 't', 118, int ) 61*7dd7cddfSDavid du Colombier # endif 62*7dd7cddfSDavid du Colombier # endif /* _BSD_SYSV */ 63*7dd7cddfSDavid du Colombier typedef struct termio TTY_state; 64*7dd7cddfSDavid du Colombier # else /* HAVE_TERMIO_H */ 65*7dd7cddfSDavid du Colombier /* Assume BSD tty stuff. Uses TIOCGETP, TIOCSETN; uses TIOCGATC/TIOCSATC if 66*7dd7cddfSDavid du Colombier * available, otherwise it uses TIOCGETC/TIOCSETC (also uses TIOCGLTC/TIOCSLTC 67*7dd7cddfSDavid du Colombier * if available) 68*7dd7cddfSDavid du Colombier */ 69*7dd7cddfSDavid du Colombier # ifdef _MINIX 70*7dd7cddfSDavid du Colombier # include <sgtty.h> 71*7dd7cddfSDavid du Colombier # define TIOCSETN TIOCSETP 72*7dd7cddfSDavid du Colombier # else 73*7dd7cddfSDavid du Colombier # include <sys/ioctl.h> 74*7dd7cddfSDavid du Colombier # endif 75*7dd7cddfSDavid du Colombier typedef struct { 76*7dd7cddfSDavid du Colombier struct sgttyb sgttyb; 77*7dd7cddfSDavid du Colombier # ifdef TIOCGATC 78*7dd7cddfSDavid du Colombier struct lchars lchars; 79*7dd7cddfSDavid du Colombier # else /* TIOCGATC */ 80*7dd7cddfSDavid du Colombier struct tchars tchars; 81*7dd7cddfSDavid du Colombier # ifdef TIOCGLTC 82*7dd7cddfSDavid du Colombier struct ltchars ltchars; 83*7dd7cddfSDavid du Colombier # endif /* TIOCGLTC */ 84*7dd7cddfSDavid du Colombier # endif /* TIOCGATC */ 85*7dd7cddfSDavid du Colombier } TTY_state; 86*7dd7cddfSDavid du Colombier # endif /* HAVE_TERMIO_H */ 87*7dd7cddfSDavid du Colombier #endif /* HAVE_TERMIOS_H */ 88*7dd7cddfSDavid du Colombier 89*7dd7cddfSDavid du Colombier /* Flags for set_tty() */ 90*7dd7cddfSDavid du Colombier #define TF_NONE 0x00 91*7dd7cddfSDavid du Colombier #define TF_WAIT 0x01 /* drain output, even it requires sleep() */ 92*7dd7cddfSDavid du Colombier #define TF_MIPSKLUDGE 0x02 /* kludge to unwedge RISC/os 5.0 tty driver */ 93*7dd7cddfSDavid du Colombier 94*7dd7cddfSDavid du Colombier EXTERN int tty_fd I__(-1); /* dup'd tty file descriptor */ 95*7dd7cddfSDavid du Colombier EXTERN int tty_devtty; /* true if tty_fd is from /dev/tty */ 96*7dd7cddfSDavid du Colombier EXTERN TTY_state tty_state; /* saved tty state */ 97*7dd7cddfSDavid du Colombier 98*7dd7cddfSDavid du Colombier extern int get_tty ARGS((int fd, TTY_state *ts)); 99*7dd7cddfSDavid du Colombier extern int set_tty ARGS((int fd, TTY_state *ts, int flags)); 100*7dd7cddfSDavid du Colombier extern void tty_init ARGS((int init_ttystate)); 101*7dd7cddfSDavid du Colombier extern void tty_close ARGS((void)); 102*7dd7cddfSDavid du Colombier 103*7dd7cddfSDavid du Colombier /* be sure not to interfere with anyone else's idea about EXTERN */ 104*7dd7cddfSDavid du Colombier #ifdef EXTERN_DEFINED 105*7dd7cddfSDavid du Colombier # undef EXTERN_DEFINED 106*7dd7cddfSDavid du Colombier # undef EXTERN 107*7dd7cddfSDavid du Colombier #endif 108*7dd7cddfSDavid du Colombier #undef I__ 109