#ifndef included_xterm_io_h
#define included_xterm_io_h
#include <xterm.h>
#ifdef CSRG_BASED
#define USE_TERMIOS
#endif
#ifdef __CYGWIN__
#define ATT
#define SVR4
#define SYSV
#define USE_SYSV_TERMIO
#endif
#ifdef __UNIXOS2__
#define USE_SYSV_TERMIO
#endif
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
#ifndef USE_POSIX_TERMIOS
#define USE_POSIX_TERMIOS
#endif
#endif
#ifdef linux
#define USE_TERMIOS
#endif
#ifdef SCO325
#define USE_TERMIOS
#define _SVID3
#endif
#ifdef Lynx
#define USE_SYSV_TERMIO
#endif
#ifdef macII
#undef SYSV
#endif
#if defined(__GLIBC__) && !defined(linux)
#define USE_POSIX_TERMIOS
#endif
#ifdef __MVS__
#define SVR4
#define USE_POSIX_TERMIOS
#endif
#ifdef __QNX__
#define USE_POSIX_TERMIOS
#endif
#if defined(__osf__)
#define USE_POSIX_TERMIOS
#undef SYSV
#endif
#if defined(SVR4) && !defined(__sgi)
#define USE_TERMIOS
#endif
#ifdef SYSV
#define USE_SYSV_TERMIO
#endif
#if defined(USE_POSIX_TERMIOS) && !defined(USE_TERMIOS)
#define USE_TERMIOS
#endif
#ifdef __QNX__
#include <ioctl.h>
#elif !defined(__CYGWIN__)
#include <sys/ioctl.h>
#endif
#if defined(USE_POSIX_TERMIOS)
#include <termios.h>
#elif defined(USE_TERMIOS)
#include <termios.h>
#define USE_ANY_SYSV_TERMIO
#define termio termios
#ifndef __CYGWIN__
#undef TCGETA
#define TCGETA TCGETS
#undef TCSETA
#define TCSETA TCSETS
#undef TCSETAW
#define TCSETAW TCSETSW
#endif
#elif defined(USE_SYSV_TERMIO)
# define USE_ANY_SYSV_TERMIO
# ifdef Lynx
# include <termio.h>
# else
# include <sys/termio.h>
# endif
#elif defined(SYSV) || defined(ISC)
# include <sys/termio.h>
#elif !defined(VMS)
# include <sgtty.h>
#endif
#ifdef SYSV
#ifdef USE_USG_PTYS
#include <sys/stream.h>
#if !defined(SVR4) || defined(SCO325)
#include <sys/ptem.h>
#endif
#endif
#elif defined(sun) && !defined(SVR4)
#include <sys/ttycom.h>
#ifdef TIOCSWINSZ
#undef TIOCSSIZE
#endif
#endif
#if defined(__CYGWIN__) && !defined(TIOCSPGRP)
#include <termios.h>
#define TIOCSPGRP (_IOW('t', 118, pid_t))
#endif
#ifdef __UNIXOS2__
#define XFREE86_PTY 0x76
#define XTY_TIOCSETA 0x48
#define XTY_TIOCSETAW 0x49
#define XTY_TIOCSETAF 0x4a
#define XTY_TIOCCONS 0x4d
#define XTY_TIOCSWINSZ 0x53
#define XTY_ENADUP 0x5a
#define XTY_TRACE 0x5b
#define XTY_TIOCGETA 0x65
#define XTY_TIOCGWINSZ 0x66
#define PTMS_GETPTY 0x64
#define PTMS_BUFSZ 14
#ifndef NCCS
#define NCCS 11
#endif
#define TIOCCONS 108
#define TIOCSWINSZ 113
#define TIOCGWINSZ 117
struct pt_termios
{
unsigned short c_iflag;
unsigned short c_oflag;
unsigned short c_cflag;
unsigned short c_lflag;
unsigned char c_cc[NCCS];
long _reserved_[4];
};
struct winsize {
unsigned short ws_row;
unsigned short ws_col;
unsigned short ws_xpixel;
unsigned short ws_ypixel;
};
#define TTYSIZE_STRUCT struct winsize
#define USE_STRUCT_WINSIZE 1
#ifdef XTERM_MAIN
extern int ptioctl(int fd, int func, void* data);
#define ioctl ptioctl
#endif
#endif
#ifdef __hpux
#include <sys/bsdtty.h>
#endif
#ifdef ISC
#define TIOCGPGRP TCGETPGRP
#define TIOCSPGRP TCSETPGRP
#endif
#ifdef Lynx
#include <resource.h>
#elif !(defined(SYSV) || defined(linux) || defined(VMS) || (defined(__QNX__)&&!defined(__QNXNTO__)))
#include <sys/resource.h>
#endif
#ifdef macII
#undef FIOCLEX
#undef FIONCLEX
#endif
#ifdef __QNX__
#undef TIOCSLTC
#undef TIOCLSET
#endif
#if defined(__sgi) && (OSMAJORVERSION >= 5)
#undef TIOCLSET
#endif
#if defined(__GNU__) || defined(__MVS__) || defined(__osf__)
#undef TIOCLSET
#undef TIOCSLTC
#endif
#if defined (__sgi) || (defined(__linux__) && defined(__sparc__))
#undef TIOCLSET
#endif
#ifdef sun
#include <sys/filio.h>
#endif
#if defined(TIOCSLTC) && ! (defined(linux) || defined(__MVS__) || defined(Lynx) || defined(SVR4))
#define HAS_LTCHARS
#endif
#if !defined(TTYSIZE_STRUCT)
#if defined(TIOCSSIZE) && (defined(sun) && !defined(SVR4))
#define USE_STRUCT_TTYSIZE 1
#define TTYSIZE_STRUCT struct ttysize
#elif defined(TIOCSWINSZ)
#define USE_STRUCT_WINSIZE 1
#define TTYSIZE_STRUCT struct winsize
#endif
#endif
#if defined(USE_STRUCT_TTYSIZE)
#define TTYSIZE_STRUCT struct ttysize
#define SET_TTYSIZE(fd, data) ioctl(fd, TIOCSSIZE, &data);
#define TTYSIZE_COLS(data) data.ts_cols
#define TTYSIZE_ROWS(data) data.ts_lines
#elif defined(USE_STRUCT_WINSIZE)
#define TTYSIZE_STRUCT struct winsize
#define SET_TTYSIZE(fd, data) ioctl(fd, TIOCSWINSZ, (char *) &data)
#define TTYSIZE_COLS(data) data.ws_col
#define TTYSIZE_ROWS(data) data.ws_row
#endif
#endif