Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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$ */
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__