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