/* $Id$ */
/*
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 */
/* Data structures for ioctl/stty/gtty, sufficient for ACK libraries */

#ifndef _SGTTY_H
#define _SGTTY_H

struct sgttyb {
  char sg_ispeed;		/* input speed (not used) */
  char sg_ospeed;		/* output speed (not used) */
  char sg_erase;		/* erase character */
  char sg_kill;			/* kill character */
#if defined(__USG) && !defined(_XENIX)
  int sg_flags;			/* mode flags */
#else
  short sg_flags;		/* mode flags */
#endif
};

struct tchars {
  char t_intrc;			/* SIGINT char */
  char t_quitc;			/* SIGQUIT char */
  char t_startc;		/* start output (initially CTRL-Q) */
  char t_stopc;			/* stop output	(initially CTRL-S) */
  char t_eofc;			/* EOF (initially CTRL-D) */
  char t_brkc;			/* input delimiter (like nl) */
};

/* Fields in t_flags. */
#define ALLDELAY     0177400

#define BSDELAY      0100000
#  define BS0        0000000
#  define BS1        0100000

#define VTDELAY	     0040000
#  define FF0        0000000
#  define FF1        0040000

#define CRDELAY      0030000
#  define CR0        0000000
#  define CR1        0010000
#  define CR2        0020000
#  define CR3        0030000

#if     defined(__USG) && !defined(_XENIX)
#define XTABS	     0000002	/* do tab expansion */
#else
#define XTABS	     0006000	/* do tab expansion */
#endif

#define TBDELAY	     0006000
#  define TAB0       0000000
#  define TAB1       0002000
#  define TAB2       0004000

#define NLDELAY	     0001400
#  define NL0	     0000000
#  define NL1        0000400
#  define NL2        0001000
#  define NL3        0001400

#define ANYP         0000300
#define EVENP        0000200
#define ODDP         0000100

#define RAW	     0000040	/* enable raw mode */
#define CRMOD	     0000020	/* map lf to cr + lf */
#define ECHO	     0000010	/* echo input */
#define LCASE	     0000004
#define CBREAK	     0000002	/* enable cbreak mode */
#if     defined(__BSD4_2) || defined(_XENIX)
#define TANDEM	     0000001
#else
#define HUPCL	     0000001    /* unused ??? */
#endif
/*#define COOKED     0000000 */	/* neither CBREAK nor RAW */

#ifdef __BDS4_2
#define TIOCGETP (('t'<<8) | 8 | (6 << 16) | 0x40000000)
#define TIOCSETP (('t'<<8) | 9 | (6 << 16) | 0x80000000)
#define TIOCSETN (('t'<<8) | 10 | (6 << 16) | 0x80000000)
#define TIOCEXCL (('t'<<8) | 13 | 0x20000000)
#define TIOCNXCL (('t'<<8) | 14 | 0x20000000)
#define TIOCHPCL (('t'<<8) | 2 | 0x20000000)
#define TIOCGETC (('t'<<8) | 18 | (6 << 16) | 0x40000000)
#define TIOCSETC (('t'<<8) | 17 | (6 << 16) | 0x80000000)
#else
#define TIOCGETP (('t'<<8) | 8)
#define TIOCSETP (('t'<<8) | 9)
#define TIOCSETN (('t'<<8) | 10)
#define TIOCEXCL (('t'<<8) | 13)
#define TIOCNXCL (('t'<<8) | 14)
#define TIOCHPCL (('t'<<8) | 2)
#define TIOCGETC (('t'<<8) | 18)
#define TIOCSETC (('t'<<8) | 17)
#endif

#define B0      0
#define B50     1
#define B75     2
#define B110    3
#define B134    4
#define B150    5
#define B200    6
#define B300    7
#define B600    8
#define B1200   9
#define B1800   10
#define B2400   11
#define B4800   12
#define B9600   13
#define EXTA    14
#define EXTB    15

extern int ioctl(int fd, unsigned int request, ...);
extern int gtty(int fildes, struct sgttyb* argp);
extern int stty(int fildes, struct sgttyb* argp);

#endif /* _SGTTY_H */
