This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/dm/include/SYS/TERMIO.H

379 lines
7.5 KiB
C++
Raw Normal View History

/* Copyright (C) 1986-1994 by Digital Mars. $Revision: 1.1.1.1 $ */
#if __SC__ || __RCC__
#pragma once
#endif
#ifndef __SYS_TERMIO_H
#define __SYS_TERMIO_H 1
#if __cplusplus
extern "C"
{
#endif
#ifndef _POSIX_VDISABLE
#define _POSIX_VDISABLE 0
#endif
#if !defined(_POSIX_SOURCE)
#define CTRL(c) ((c)&037)
#define IBSHIFT 16
#define NCC 8
#endif /* !defined(_POSIX_SOURCE) */
#define NCCS 19
#include <unistd.h>
typedef unsigned char cc_t;
typedef unsigned long speed_t;
#if defined(M_ELF)
typedef unsigned long tcflag_t;
#else
typedef unsigned short tcflag_t;
#endif
/* POSIX structure */
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_cc[NCCS];
};
/* termios option flags */
#define TCIFLUSH 0
#define TCOFLUSH 1
#define TCIOFLUSH 2
#define TCOOFF 0
#define TCOON 1
#define TCIOFF 2
#define TCION 3
/* System V structure */
#if !defined(_POSIX_SOURCE)
struct termio
{
unsigned short c_iflag;
unsigned short c_oflag;
unsigned short c_cflag;
unsigned short c_lflag;
char c_line;
unsigned char c_cc[NCC];
};
struct winsize
{
unsigned short ws_row;
unsigned short ws_col;
unsigned short ws_xpixel;
unsigned short ws_ypixel;
};
#endif
/* input modes */
#define IGNBRK 0x1
#define BRKINT 0x2
#define IGNPAR 0x4
#define PARMRK 0x8
#define INPCK 0x10
#define ISTRIP 0x20
#define INLCR 0x40
#define IGNCR 0x80
#define ICRNL 0x100
#if !defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
#define IUCLC 0x200
#define IXANY 0x800
#define IMAXBEL 0020000
#define DOSMODE 0100000
#endif
#define IXON 0x400
#define IXOFF 0x1000
/* output modes */
#define OPOST 0x1
#if !defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
#define OLCUC 0x2
#define ONLCR 0x4
#define OCRNL 0x8
#define ONOCR 0x10
#define ONLRET 0x20
#define OFILL 0x40
#define OFDEL 0x80
#define NLDLY 0x100
#define NL0 0
#define NL1 0x100
#define CRDLY 0x600
#define CR0 0
#define CR1 0x200
#define CR2 0x400
#define CR3 0x600
#define TABDLY 0x1800
#define TAB0 0
#define TAB1 0x800
#define TAB2 0x1000
#define TAB3 0x1800
#define XTABS 0x1800
#define BSDLY 0x2000
#define BS0 0
#define BS1 0x2000
#define VTDLY 0x4000
#define VT0 0
#define VT1 0x4000
#define FFDLY 0x8000
#define FF0 0
#define FF1 0x8000
#endif
#if !defined(_POSIX_SOURCE)
#define PAGEOUT 0x10000
#define WRAP 0x20000
/* control modes */
#define CBAUD 0xF
#endif
#define B0 0
#define B50 0x1
#define B75 0x2
#define B110 0x3
#define B134 0x4
#define B150 0x5
#define B200 0x6
#define B300 0x7
#define B600 0x8
#define B1200 0x9
#define B1800 0xA
#define B2400 0xB
#define B4800 0xC
#define B9600 0xD
#define B19200 0xE
#define B38400 0xF
#if !defined(_POSIX_SOURCE)
#define EXTA 0xE
#define EXTB 0xF
#endif
#define CS5 0
#define CS6 0x10
#define CS7 0x20
#define CS8 0x30
#define CSIZE 0x30
#define CSTOPB 0x40
#define CREAD 0x80
#define PARENB 0x100
#define PARODD 0x200
#define HUPCL 0x400
#define CLOCAL 0x800
/* stdin modes */
#define ISIG 0x1
#define ICANON 0x2
#if !defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
#define XCASE 0x4
#endif
#define ECHO 0x8
#define ECHOE 0x10
#define ECHOK 0x20
#define ECHONL 0x40
#define NOFLSH 0x80
#define TOSTOP 0x100
#if !defined(_POSIX_SOURCE)
#define ECHOCTL 0001000
#define ECHOPRT 0002000
#define ECHOKE 0004000
#define DEFECHO 0010000
#define FLUSHO 0020000
#define PENDIN 0040000
#define RCV1EN 0x8000
#define XMT1EN 0x10000
#define LOBLK 0x20000
#define XCLUDE 0x8000
#define CIBAUD 03600000
#define PAREXT 04000000
#endif
/* control chars indexes */
#define VINTR 0
#define VQUIT 1
#define VERASE 2
#define VKILL 3
#define VEOF 4
#define VMIN 4
#define VEOL 5
#define VTIME 5
#if !defined(_POSIX_SOURCE)
#define VEOL2 6
#define VSWTCH 7
#endif
#define VSTART 8
#define VSTOP 9
#define VSUSP 10
#if !defined(_POSIX_SOURCE)
#define VDSUSP 11
#define VREPRINT 12
#define VDISCARD 13
#define VWERASE 14
#define VLNEXT 15
#define VCEOF NCC
#define VCEOL (NCC + 1)
#define CNUL 0
#define CDEL 0377
/* control char values */
#define CNSWTCH 0
#define CEOF 4 /* EOT, cntl D */
#define CERASE 8 /* BS, cntl H */
#define CKILL 0x15 /* NAK, cntl U */
#define CSTART 0x11 /* DC1, cntl Q */
#define CSTOP 0x13 /* DC3, cntl S */
#define CSWTCH 0x1A /* SUB, cntl Z */
#define CSUSP 0x1A /* SUB, cntl Z - POSIX default suspend character */
#define CDSUSP 0x19
#define CQUIT 0x1C /* FS, cntl \ */
#define CINTR 0x7F /* DEL cntl ? */
#define CESC 0x5C /* escape char ('\\') */
#define CEOT 04
#define CEOL 0
#define CEOL2 0
#define CRPRNT CTRL('r')
#define CFLUSH CTRL('o')
#define CWERASE CTRL('w')
#define CLNEXT CTRL('v')
/* Line discipline IOCTL's. */
#define LDIOC ('D'<<8)
#define LDOPEN (LDIOC|0)
#define LDCLOSE (LDIOC|1)
#define LDCHG (LDIOC|2)
#define LDGETT (LDIOC|8)
#define LDSETT (LDIOC|9)
#define LDSMAP (LDIOC|10)
#define LDGMAP (LDIOC|11)
#define LDNMAP (LDIOC|12)
#define DIOC ('d'<<8)
#define DIOCGETP (DIOC|8)
#define DIOCSETP (DIOC|9)
#define FIORDCHK (('f'<<8)|3)
/* mouse ioctls. */
#define EVLD_IOC (LDIOC)
#define LDEV_SETTYPE (EVLD_IOC|13)
#define LDEV_GETEV (EVLD_IOC|14)
#define LDEV_ATTACHQ (EVLD_IOC|15)
#define LDEV_SETRATIO (EVLD_IOC|16)
/* event driver ioctls */
#define EQIOC ('Q'<<8)
#define EQIO_GETQP (EQIOC|1)
#define EQIO_SETEMASK (EQIOC|2)
#define EQIO_GETEMASK (EQIOC|3)
#define EQIO_SUSPEND (EQIOC|4)
#define EQIO_RESUME (EQIOC|5)
#define EQIO_BLOCK (EQIOC|6)
#define TIOC ('T'<<8)
#define TCGETA (1|TIOC)
#define TCSETA (2|TIOC)
#define TCSETAW (3|TIOC)
#define TCSETAF (4|TIOC)
#define TCSBRK (5|TIOC)
#define TCXONC (6|TIOC)
#define TCFLSH (7|TIOC)
#define TIOCKBON (TIOC|8)
#define TIOCKBOF (TIOC|9)
#define KBENABLED (TIOC|10)
#define TCGETS (13|TIOC)
#define TCSETS (14|TIOC)
#define TCSETSW (15|TIOC)
#define TCSETSF (16|TIOC)
#if defined(M_ELF)
#define TCSANOW (14|('T'<<8))
#define TCSADRAIN (15|('T'<<8))
#define TCSAFLUSH (16|('T'<<8))
#else
#define TCSANOW XCSETA
#define TCSADRAIN XCSETAW
#define TCSAFLUSH XCSETAF
#define TCSADFLUSH XCSETAF
#endif
#define IOCTYPE 0xffffff00
#define TCDSET (32|TIOC)
#define RTS_TOG (33|TIOC)
#define TIOCGWINSZ (104|TIOC)
#define TIOCSWINSZ (103|TIOC)
#endif /* !defined(_POSIX_SOURCE) */
#define IEXTEN 0100000
#if defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
#define XIOC (('i'<<24) | ('X'<<16))
#else
#define XIOC ('x'<<8)
#endif
#define O_XIOC ('x'<<8)
#define O_XCGETA (O_XIOC|1)
#define O_XCSETA (O_XIOC|2)
#define O_XCSETAW (O_XIOC|3)
#define O_XCSETAF (O_XIOC|4)
#define XCGETA (XIOC|1)
#define XCSETA (XIOC|2)
#define XCSETAW (XIOC|3)
#define XCSETAF (XIOC|4)
#if !__STDC__
speed_t __cdecl cfgetispeed (const struct termios *);
speed_t __cdecl cfgetospeed (const struct termios *);
int __cdecl cfsetispeed (struct termios *, speed_t);
int __cdecl cfsetospeed (struct termios *, speed_t);
#if !defined(_XOPEN_SOURCE) && !defined(_POSIX_SOURCE)
#ifdef M_ELF
#define tcgetattr(fd, termios_p) ioctl(fd, TCGETS, termios_p)
#else
#define tcgetattr(fd, termios_p) ioctl(fd, XCGETA, termios_p)
#endif
#define tcsetattr(fd, opt, termios_p) ioctl(fd, opt, termios_p)
#define tcflow(fd, action) ioctl(fd, TCXONC, action)
#define tcflush(fd, queue_select) ioctl(fd, TCFLSH, queue_select)
#define tcdrain(fd) ioctl(fd, TCSBRK, 1)
#define tcsendbreak(fd, duration) ioctl(fd, TCSBRK, 0, duration)
#endif
#endif /* !__STDC__ */
#if __cplusplus
}
#endif
#endif