|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the w64 mingw-runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER within this package. | 
|  | */ | 
|  | /* sys/termios.h | 
|  |  | 
|  | Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. | 
|  |  | 
|  | This file is part of Cygwin. | 
|  |  | 
|  | This software is a copyrighted work licensed under the terms of the | 
|  | Cygwin license.  Please consult the file "CYGWIN_LICENSE" for | 
|  | details. */ | 
|  |  | 
|  | /* sys/termios.h */ | 
|  |  | 
|  | #ifndef	_SYS_TERMIOS_H | 
|  | #define _SYS_TERMIOS_H | 
|  |  | 
|  | #define	TIOCMGET	0x5415 | 
|  | #define	TIOCMSET	0x5418 | 
|  | #define	TIOCINQ		0x541B | 
|  |  | 
|  | /* TIOCINQ is utilized instead of FIONREAD which has been | 
|  | accupied for other purposes under CYGWIN. | 
|  | Other UNIX ioctl requests has been omited because | 
|  | effects of their work one can achive by standard | 
|  | POSIX commands */ | 
|  |  | 
|  |  | 
|  | #define	TIOCM_DTR	0x002 | 
|  | #define	TIOCM_RTS	0x004 | 
|  | #define	TIOCM_CTS	0x020 | 
|  | #define	TIOCM_CAR	0x040 | 
|  | #define	TIOCM_RNG	0x080 | 
|  | #define	TIOCM_DSR	0x100 | 
|  | #define	TIOCM_CD	TIOCM_CAR | 
|  | #define	TIOCM_RI	TIOCM_RNG | 
|  |  | 
|  | #define TCOOFF		0 | 
|  | #define TCOON		1 | 
|  | #define TCIOFF		2 | 
|  | #define TCION		3 | 
|  |  | 
|  | #define TCGETA	5 | 
|  | #define TCSETA	6 | 
|  | #define TCSETAW		7 | 
|  | #define TCSETAF		8 | 
|  |  | 
|  | #define TCIFLUSH	0 | 
|  | #define TCOFLUSH	1 | 
|  | #define TCIOFLUSH	2 | 
|  | #define TCFLSH          3 | 
|  |  | 
|  | #define TCSAFLUSH	1 | 
|  | #define TCSANOW		2 | 
|  | #define TCSADRAIN	3 | 
|  | #define TCSADFLUSH	4 | 
|  |  | 
|  | #define TIOCPKT		6 | 
|  |  | 
|  | #define TIOCPKT_DATA		 0 | 
|  | #define TIOCPKT_FLUSHREAD	 1 | 
|  | #define TIOCPKT_FLUSHWRITE	 2 | 
|  | #define TIOCPKT_STOP		 4 | 
|  | #define TIOCPKT_START		 8 | 
|  | #define TIOCPKT_NOSTOP		16 | 
|  | #define TIOCPKT_DOSTOP		32 | 
|  |  | 
|  | #define FIONBIO 0x8004667e /* To be compatible with socket version */ | 
|  |  | 
|  | #define CTRL(ch)	((ch)&0x1F) | 
|  |  | 
|  | #define CNUL	0 | 
|  | #define CDEL	0x0007f | 
|  | #define CESC	'\\' | 
|  | #define CINTR	CTRL('C') | 
|  | #define CQUIT	0x0001c | 
|  | #define CERASE	CTRL('H') | 
|  | #define CKILL	CTRL('U') | 
|  | #define CEOT	CTRL('D') | 
|  | #define CEOL	0 | 
|  | #define CEOL2	0 | 
|  | #define CEOF	CTRL('D') | 
|  | #define CSTART	CTRL('Q') | 
|  | #define CSTOP	CTRL('S') | 
|  | #define CSWTCH	0x0001a | 
|  | #define NSWTCH	0 | 
|  | #define CSUSP	CTRL('Z') | 
|  | #define CDSUSP	CTRL('Y') | 
|  | #define CRPRNT	CTRL('R') | 
|  | #define CFLUSH	CTRL('O') | 
|  | #define CWERASE	CTRL('W') | 
|  | #define CLNEXT	CTRL('V') | 
|  |  | 
|  | /* iflag bits */ | 
|  | #define IGNBRK	0x00001 | 
|  | #define BRKINT	0x00002 | 
|  | #define IGNPAR	0x00004 | 
|  | #define IMAXBEL	0x00008 | 
|  | #define INPCK	0x00010 | 
|  | #define ISTRIP	0x00020 | 
|  | #define INLCR	0x00040 | 
|  | #define IGNCR	0x00080 | 
|  | #define ICRNL	0x00100 | 
|  | #define IXON	0x00400 | 
|  | #define IXOFF	0x01000 | 
|  | #define IUCLC	0x04000 | 
|  | #define IXANY	0x08000 | 
|  | #define PARMRK	0x10000 | 
|  |  | 
|  | /* oflag bits */ | 
|  |  | 
|  | #define OPOST	0x00001 | 
|  | #define OLCUC	0x00002 | 
|  | #define OCRNL	0x00004 | 
|  | #define ONLCR	0x00008 | 
|  | #define ONOCR	0x00010 | 
|  | #define ONLRET	0x00020 | 
|  | #define OFILL	0x00040 | 
|  | #define CRDLY	0x00180 | 
|  | #define CR0	0x00000 | 
|  | #define CR1	0x00080 | 
|  | #define CR2	0x00100 | 
|  | #define CR3	0x00180 | 
|  | #define NLDLY	0x00200 | 
|  | #define NL0	0x00000 | 
|  | #define NL1	0x00200 | 
|  | #define BSDLY	0x00400 | 
|  | #define BS0	0x00000 | 
|  | #define BS1	0x00400 | 
|  | #define TABDLY	0x01800 | 
|  | #define TAB0	0x00000 | 
|  | #define TAB1	0x00800 | 
|  | #define TAB2	0x01000 | 
|  | #define TAB3	0x01800 | 
|  | #define XTABS	0x01800 | 
|  | #define VTDLY	0x02000 | 
|  | #define VT0	0x00000 | 
|  | #define VT1	0x02000 | 
|  | #define FFDLY	0x04000 | 
|  | #define FF0	0x00000 | 
|  | #define FF1	0x04000 | 
|  | #define OFDEL	0x08000 | 
|  |  | 
|  | /* cflag bits */ | 
|  |  | 
|  | /* Baud rate values.  These must fit in speed_t, which is unsigned | 
|  | char.  See also the extended baud rates below.  These baud rates | 
|  | set an additional bit. */ | 
|  | #define CBAUD	 0x0100f | 
|  | #define B0	 0x00000 | 
|  | #define B50	 0x00001 | 
|  | #define B75	 0x00002 | 
|  | #define B110	 0x00003 | 
|  | #define B134	 0x00004 | 
|  | #define B150	 0x00005 | 
|  | #define B200	 0x00006 | 
|  | #define B300	 0x00007 | 
|  | #define B600	 0x00008 | 
|  | #define B1200	 0x00009 | 
|  | #define B1800	 0x0000a | 
|  | #define B2400	 0x0000b | 
|  | #define B4800	 0x0000c | 
|  | #define B9600	 0x0000d | 
|  | #define B19200	 0x0000e | 
|  | #define B38400	 0x0000f | 
|  |  | 
|  | #define CSIZE	 0x00030 | 
|  | #define CS5	 0x00000 | 
|  | #define CS6	 0x00010 | 
|  | #define CS7	 0x00020 | 
|  | #define CS8	 0x00030 | 
|  | #define CSTOPB	 0x00040 | 
|  | #define CREAD	 0x00080 | 
|  | #define PARENB	 0x00100 | 
|  | #define PARODD	 0x00200 | 
|  | #define HUPCL	 0x00400 | 
|  | #define CLOCAL	 0x00800 | 
|  | #define CBAUDEX	 0x0100f | 
|  | #define B57600	 0x01001 | 
|  | #define B115200	 0x01002 | 
|  | #define B128000	 0x01003 | 
|  | #define B230400  0x01004 | 
|  | #define B256000	 0x01005 | 
|  | #define CRTSXOFF 0x04000 | 
|  | #define CRTSCTS	 0x08000 | 
|  |  | 
|  | /* lflag bits */ | 
|  | #define ISIG	0x0001 | 
|  | #define ICANON	0x0002 | 
|  | #define ECHO	0x0004 | 
|  | #define ECHOE	0x0008 | 
|  | #define ECHOK	0x0010 | 
|  | #define ECHONL	0x0020 | 
|  | #define NOFLSH	0x0040 | 
|  | #define TOSTOP	0x0080 | 
|  | #define IEXTEN	0x0100 | 
|  | #define FLUSHO	0x0200 | 
|  | #define ECHOKE	0x0400 | 
|  | #define ECHOCTL	0x0800 | 
|  |  | 
|  | #define VDISCARD	1 | 
|  | #define VEOL		2 | 
|  | #define VEOL2		3 | 
|  | #define VEOF		4 | 
|  | #define VERASE		5 | 
|  | #define VINTR		6 | 
|  | #define VKILL		7 | 
|  | #define VLNEXT		8 | 
|  | #define VMIN		9 | 
|  | #define VQUIT		10 | 
|  | #define VREPRINT	11 | 
|  | #define VSTART		12 | 
|  | #define VSTOP		13 | 
|  | #define VSUSP		14 | 
|  | #define VSWTC		15 | 
|  | #define VTIME		16 | 
|  | #define VWERASE	17 | 
|  |  | 
|  | #define NCCS		18 | 
|  |  | 
|  | /* `c_cc' member of 'struct termios' structure can be disabled by | 
|  | using the value _POSIX_VDISABLE.  */ | 
|  | #define	_POSIX_VDISABLE	'\0' | 
|  |  | 
|  | /* Compare a character C to a value VAL from the `c_cc' array in a | 
|  | `struct termios'.  If VAL is _POSIX_VDISABLE, no character can match it.  */ | 
|  | #define CCEQ(val, c)	((c) == (val) && (val) != _POSIX_VDISABLE) | 
|  |  | 
|  | typedef unsigned char cc_t; | 
|  | typedef unsigned int  tcflag_t; | 
|  | typedef unsigned int  speed_t; | 
|  | typedef unsigned short otcflag_t; | 
|  | typedef unsigned char ospeed_t; | 
|  |  | 
|  | struct __oldtermios { | 
|  | otcflag_t	c_iflag; | 
|  | otcflag_t	c_oflag; | 
|  | otcflag_t	c_cflag; | 
|  | otcflag_t	c_lflag; | 
|  | char		c_line; | 
|  | cc_t		c_cc[NCCS]; | 
|  | ospeed_t	c_ispeed; | 
|  | ospeed_t	c_ospeed; | 
|  | }; | 
|  |  | 
|  | struct termios { | 
|  | tcflag_t	c_iflag; | 
|  | tcflag_t	c_oflag; | 
|  | tcflag_t	c_cflag; | 
|  | tcflag_t	c_lflag; | 
|  | char		c_line; | 
|  | cc_t		c_cc[NCCS]; | 
|  | speed_t		c_ispeed; | 
|  | speed_t		c_ospeed; | 
|  | }; | 
|  |  | 
|  | #ifdef CYGWIN_VERSION_DLL_IS_OLD_TERMIOS | 
|  | #ifdef __GNUC__ | 
|  | # define __tonew_termios(ti) \ | 
|  | ({ \ | 
|  | struct termios *__newti; \ | 
|  | \ | 
|  | if (!CYGWIN_VERSION_DLL_IS_OLD_TERMIOS) \ | 
|  | __newti = (struct termios *) ti; \ | 
|  | else \ | 
|  | { \ | 
|  | __newti = (struct termios *) alloca(sizeof(struct termios)); \ | 
|  | __newti->c_iflag = ((struct __oldtermios *)ti)->c_iflag; \ | 
|  | __newti->c_oflag = ((struct __oldtermios *)ti)->c_oflag; \ | 
|  | __newti->c_cflag = ((struct __oldtermios *)ti)->c_cflag; \ | 
|  | __newti->c_lflag = ((struct __oldtermios *)ti)->c_lflag; \ | 
|  | __newti->c_line = ((struct __oldtermios *)ti)->c_line; \ | 
|  | __newti->c_ispeed = ((struct __oldtermios *)ti)->c_ispeed; \ | 
|  | __newti->c_ospeed = ((struct __oldtermios *)ti)->c_ospeed; \ | 
|  | memcpy (__newti->c_cc, ((struct __oldtermios *)ti)->c_cc, sizeof(__newti->c_cc)); \ | 
|  | } \ | 
|  | __newti; \ | 
|  | }) | 
|  |  | 
|  | # define __makenew_termios(ti) \ | 
|  | (CYGWIN_VERSION_DLL_IS_OLD_TERMIOS ? \ | 
|  | (struct termios *) alloca (sizeof (struct termios)) : (ti)) | 
|  |  | 
|  | # define __toapp_termios(toti, fromti) \ | 
|  | ({ \ | 
|  | if (!CYGWIN_VERSION_DLL_IS_OLD_TERMIOS) \ | 
|  | toti = fromti; \ | 
|  | else \ | 
|  | { \ | 
|  | ((struct __oldtermios *)toti)->c_iflag = fromti->c_iflag; \ | 
|  | ((struct __oldtermios *)toti)->c_oflag = fromti->c_oflag; \ | 
|  | ((struct __oldtermios *)toti)->c_cflag = fromti->c_cflag; \ | 
|  | ((struct __oldtermios *)toti)->c_lflag = fromti->c_lflag; \ | 
|  | ((struct __oldtermios *)toti)->c_line = fromti->c_line; \ | 
|  | ((struct __oldtermios *)toti)->c_ispeed = fromti->c_ispeed; \ | 
|  | ((struct __oldtermios *)toti)->c_ospeed = fromti->c_ospeed; \ | 
|  | memcpy (((struct __oldtermios*)toti)->c_cc, fromti->c_cc, sizeof(fromti->c_cc)); \ | 
|  | } \ | 
|  | toti; \ | 
|  | }) | 
|  | #endif /*__GNUC__*/ | 
|  | #endif | 
|  |  | 
|  | #define termio termios | 
|  |  | 
|  | #define cfgetospeed(tp)		((tp)->c_ospeed) | 
|  | #define cfgetispeed(tp)		((tp)->c_ispeed) | 
|  | #define cfsetospeed(tp,s)	(((tp)->c_ospeed = (s)), 0) | 
|  | #define cfsetispeed(tp,s)	(((tp)->c_ispeed = (s)), 0) | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | int tcgetattr (int, struct termios *); | 
|  | int tcsetattr (int, int, const struct termios *); | 
|  | int tcsendbreak (int, int); | 
|  | int tcdrain (int); | 
|  | int tcflush (int, int); | 
|  | int tcflow (int, int); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  |  | 
|  | /* Extra stuff to make porting stuff easier.  */ | 
|  | struct winsize | 
|  | { | 
|  | unsigned short ws_row, ws_col; | 
|  | unsigned short ws_xpixel, ws_ypixel; | 
|  | }; | 
|  |  | 
|  | #define TIOCGWINSZ (('T' << 8) | 1) | 
|  | #define TIOCSWINSZ (('T' << 8) | 2) | 
|  |  | 
|  | #endif	/* _SYS_TERMIOS_H */ |