1/* exp_tty_in.h - internal tty support definitions */
2
3/* Definitions for handling termio inclusion are localized here */
4/* This file should be included only if direct access to tty structures are */
5/* required.  This file is necessary to avoid  mismatch between gcc's and */
6/* vendor's include files */
7
8/* Written by Rob Savoye <rob@cygnus.com>. Mon Feb 22 11:16:53 RMT 1993 */
9
10#ifndef __EXP_TTY_IN_H__
11#define __EXP_TTY_IN_H__
12
13#include "expect_cf.h"
14
15#ifdef __MACHTEN__
16#include "sys/types.h"
17#endif
18
19/*
20 * Set up some macros to isolate tty differences
21 */
22
23/* On some hosts, termio is incomplete (broken) and sgtty is a better
24choice.  At the same time, termio has some definitions for modern
25stuff like window sizes that sgtty lacks - that's why termio.h
26is included even when we claim the basic style is sgtty
27*/
28
29/* test for pyramid may be unnecessary, but only Pyramid people have */
30/* complained - notably pclink@qus102.qld.npb.telecom.com.au (Rick) */
31#if defined(pyr) && defined(HAVE_TERMIO) && defined(HAVE_SGTTYB)
32#undef HAVE_SGTTYB
33#endif
34
35/* on ISC SVR3.2, termios is skeletal and termio is a better choice.  */
36/* sgttyb must also be avoided because it redefines same things that */
37/* termio does */
38/* note that both SVR3.2 and AIX lacks TCGETS or TCGETA in termios.h */
39/* but SVR3.2 lacks both TCSETATTR and TCGETS/A */
40#if defined(HAVE_TERMIO) && defined(HAVE_TERMIOS) && !defined(HAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H) && !defined(HAVE_TCSETATTR)
41# undef HAVE_TERMIOS
42# undef HAVE_SGTTYB
43#endif
44
45#if defined(HAVE_TERMIO) && !defined(HAVE_TERMIOS)
46#  include <termio.h>
47#  undef POSIX
48#  define TERMINAL termio
49#  ifndef TCGETS
50#    define TCGETS	TCGETA
51#    define TCSETS	TCSETA
52#    define TCSETSW	TCSETAW
53#    define TCSETSF	TCSETAF
54#  endif
55#endif
56
57#if defined(HAVE_SGTTYB) && !defined(HAVE_TERMIOS)
58#  undef HAVE_TERMIO
59#  undef POSIX
60#ifndef TCGETS
61#  define TCGETS	TIOCGETP
62#  define TCSETS	TIOCSETP
63#endif
64#ifndef TCSETSW
65#  define TCSETSW	TIOCSETN
66#endif
67#  define TERMINAL sgttyb
68#  ifdef HAVE_SYS_FCNTL_H
69#    include <sys/fcntl.h>
70#  else
71#    include <fcntl.h>
72#  endif
73#  include <sgtty.h>
74#  include <sys/ioctl.h>
75#endif
76
77
78#if defined(HAVE_TERMIOS)
79#  undef HAVE_TERMIO
80#  undef HAVE_SGTTYB
81#  include <termios.h>
82#  define TERMINAL termios
83#  if !defined(TCGETS) || !defined(TCSETS)
84#    define TCGETS	TCGETA
85#    define TCSETS	TCSETA
86#    define TCSETSW	TCSETAW
87#    define TCSETSF	TCSETAF
88#  endif
89#endif
90
91/* This section was written by: Don Libes, NIST, 2/6/90 */
92
93typedef struct TERMINAL exp_tty;
94extern exp_tty exp_tty_original;
95extern exp_tty exp_tty_current;
96extern exp_tty exp_tty_cooked;
97
98#include "exp_tty.h"
99
100#endif	/* __EXP_TTY_IN_H__ */
101