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