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__
|