Home | History | Annotate | Line # | Download | only in ksh
tty.h revision 1.1
      1 /*
      2 	tty.h -- centralized definitions for a variety of terminal interfaces
      3 
      4 	created by DPK, Oct. 1986
      5 
      6 	Rearranged to work with autoconf, added TTY_state, get_tty/set_tty
      7 						Michael Rendell, May '94
      8 
      9 	last edit:	30-Jul-1987	D A Gwyn
     10 */
     11 /* $Id: tty.h,v 1.1 1996/09/21 23:35:17 jtc Exp $ */
     12 
     13 /* some useful #defines */
     14 #ifdef EXTERN
     15 # define I__(i) = i
     16 #else
     17 # define I__(i)
     18 # define EXTERN extern
     19 # define EXTERN_DEFINED
     20 #endif
     21 
     22 #ifdef	HAVE_TERMIOS_H
     23 # include <termios.h>
     24 typedef struct termios TTY_state;
     25 #else
     26 # ifdef HAVE_TERMIO_H
     27 #  include <termio.h>
     28 #  if _BSD_SYSV			/* BRL UNIX System V emulation */
     29 #   ifndef NTTYDISC
     30 #    define	TIOCGETD	_IOR( 't', 0, int )
     31 #    define	TIOCSETD	_IOW( 't', 1, int )
     32 #    define	NTTYDISC	2
     33 #   endif
     34 #   ifndef TIOCSTI
     35 #    define	TIOCSTI		_IOW( 't', 114, char )
     36 #   endif
     37 #   ifndef TIOCSPGRP
     38 #    define	TIOCSPGRP	_IOW( 't', 118, int )
     39 #   endif
     40 #  endif /* _BSD_SYSV */
     41 typedef struct termio TTY_state;
     42 # else /* HAVE_TERMIO_H */
     43 /* Assume BSD tty stuff.  Uses TIOCGETP, TIOCSETN; uses TIOCGATC/TIOCSATC if
     44  * available, otherwise it uses TIOCGETC/TIOCSETC (also uses TIOCGLTC/TIOCSLTC
     45  * if available)
     46  */
     47 #  ifdef _MINIX
     48 #   include <sgtty.h>
     49 #   define TIOCSETN	TIOCSETP
     50 #  else
     51 #   include <sys/ioctl.h>
     52 #  endif
     53 typedef struct {
     54 	struct sgttyb	sgttyb;
     55 #  ifdef TIOCGATC
     56 	struct lchars	lchars;
     57 #  else /* TIOCGATC */
     58 	struct tchars	tchars;
     59 #   ifdef TIOCGLTC
     60 	struct ltchars	ltchars;
     61 #   endif /* TIOCGLTC */
     62 #  endif /* TIOCGATC */
     63 } TTY_state;
     64 # endif /* HAVE_TERMIO_H */
     65 #endif /* HAVE_TERMIOS_H */
     66 
     67 /* Flags for set_tty() */
     68 #define TF_NONE		0x00
     69 #define TF_WAIT		0x01	/* drain output, even it requires sleep() */
     70 #define TF_MIPSKLUDGE	0x02	/* kludge to unwedge RISC/os 5.0 tty driver */
     71 
     72 EXTERN int		tty_fd I__(-1);	/* dup'd tty file descriptor */
     73 EXTERN int		tty_devtty;	/* true if tty_fd is from /dev/tty */
     74 EXTERN TTY_state	tty_state;	/* saved tty state */
     75 
     76 extern int	get_tty ARGS((int fd, TTY_state *ts));
     77 extern int	set_tty ARGS((int fd, TTY_state *ts, int flags));
     78 extern void	tty_init ARGS((int init_ttystate));
     79 extern void	tty_close ARGS((void));
     80 
     81 /* be sure not to interfere with anyone else's idea about EXTERN */
     82 #ifdef EXTERN_DEFINED
     83 # undef EXTERN_DEFINED
     84 # undef EXTERN
     85 #endif
     86 #undef I__
     87