blob: 5de678506d9daf8e7c293c9f9b480c1eb3834f40 [file] [log] [blame]
/**
* D header file for POSIX.
*
* Copyright: Copyright Sean Kelly 2005 - 2009.
* License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
* Authors: Sean Kelly, Alex Rønne Petersen
* Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
*/
/* Copyright Sean Kelly 2005 - 2009.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
module core.sys.posix.termios;
import core.sys.posix.config;
public import core.sys.posix.sys.types; // for pid_t
version (OSX)
version = Darwin;
else version (iOS)
version = Darwin;
else version (TVOS)
version = Darwin;
else version (WatchOS)
version = Darwin;
version (Posix):
extern (C):
nothrow:
@nogc:
@system:
//
// Required
//
/*
cc_t
speed_t
tcflag_t
NCCS
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t[NCCS] c_cc;
}
VEOF
VEOL
VERASE
VINTR
VKILL
VMIN
VQUIT
VSTART
VSTOP
VSUSP
VTIME
BRKINT
ICRNL
IGNBRK
IGNCR
IGNPAR
INLCR
INPCK
ISTRIP
IXOFF
IXON
PARMRK
OPOST
B0
B50
B75
B110
B134
B150
B200
B300
B600
B1200
B1800
B2400
B4800
B9600
B19200
B38400
CSIZE
CS5
CS6
CS7
CS8
CSTOPB
CREAD
PARENB
PARODD
HUPCL
CLOCAL
ECHO
ECHOE
ECHOK
ECHONL
ICANON
IEXTEN
ISIG
NOFLSH
TOSTOP
TCSANOW
TCSADRAIN
TCSAFLUSH
TCIFLUSH
TCIOFLUSH
TCOFLUSH
TCIOFF
TCION
TCOOFF
TCOON
speed_t cfgetispeed(const scope termios*);
speed_t cfgetospeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int cfsetospeed(termios*, speed_t);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, termios*);
int tcsendbreak(int, int);
int tcsetattr(int, int, const scope termios*);
*/
version (CRuntime_Glibc)
{
alias ubyte cc_t;
alias uint speed_t;
alias uint tcflag_t;
enum NCCS = 32;
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_line;
cc_t[NCCS] c_cc;
speed_t c_ispeed;
speed_t c_ospeed;
}
enum VEOF = 4;
enum VEOL = 11;
enum VERASE = 2;
enum VINTR = 0;
enum VKILL = 3;
enum VMIN = 6;
enum VQUIT = 1;
enum VSTART = 8;
enum VSTOP = 9;
enum VSUSP = 10;
enum VTIME = 5;
enum BRKINT = 0x0000002; // 0000002
enum ICRNL = 0x0000100; // 0000400
enum IGNBRK = 0x0000001; // 0000001
enum IGNCR = 0x0000080; // 0000200
enum IGNPAR = 0x0000004; // 0000004
enum INLCR = 0x0000040; // 0000100
enum INPCK = 0x0000010; // 0000020
enum ISTRIP = 0x0000020; // 0000040
enum IXOFF = 0x0001000; // 0010000
enum IXON = 0x0000400; // 0002000
enum PARMRK = 0x0000008; // 0000010
enum OPOST = 0x0000001; // 0000001
enum B0 = 0x0000000; // 0000000
enum B50 = 0x0000001; // 0000001
enum B75 = 0x0000002; // 0000002
enum B110 = 0x0000003; // 0000003
enum B134 = 0x0000004; // 0000004
enum B150 = 0x0000005; // 0000005
enum B200 = 0x0000006; // 0000006
enum B300 = 0x0000007; // 0000007
enum B600 = 0x0000008; // 0000010
enum B1200 = 0x0000009; // 0000011
enum B1800 = 0x000000A; // 0000012
enum B2400 = 0x000000B; // 0000013
enum B4800 = 0x000000C; // 0000014
enum B9600 = 0x000000D; // 0000015
enum B19200 = 0x000000E; // 0000016
enum B38400 = 0x000000F; // 0000017
enum CSIZE = 0x0000030; // 0000060
enum CS5 = 0x0000000; // 0000000
enum CS6 = 0x0000010; // 0000020
enum CS7 = 0x0000020; // 0000040
enum CS8 = 0x0000030; // 0000060
enum CSTOPB = 0x0000040; // 0000100
enum CREAD = 0x0000080; // 0000200
enum PARENB = 0x0000100; // 0000400
enum PARODD = 0x0000200; // 0001000
enum HUPCL = 0x0000400; // 0002000
enum CLOCAL = 0x0000800; // 0004000
enum ECHO = 0x0000008; // 0000010
enum ECHOE = 0x0000010; // 0000020
enum ECHOK = 0x0000020; // 0000040
enum ECHONL = 0x0000040; // 0000100
enum ICANON = 0x0000002; // 0000002
enum IEXTEN = 0x0008000; // 0100000
enum ISIG = 0x0000001; // 0000001
enum NOFLSH = 0x0000080; // 0000200
enum TOSTOP = 0x0000100; // 0000400
enum TCSANOW = 0;
enum TCSADRAIN = 1;
enum TCSAFLUSH = 2;
enum TCIFLUSH = 0;
enum TCOFLUSH = 1;
enum TCIOFLUSH = 2;
enum TCIOFF = 2;
enum TCION = 3;
enum TCOOFF = 0;
enum TCOON = 1;
speed_t cfgetispeed(const scope termios*);
speed_t cfgetospeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int cfsetospeed(termios*, speed_t);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, termios*);
int tcsendbreak(int, int);
int tcsetattr(int, int, const scope termios*);
}
else version (Darwin)
{
alias ubyte cc_t;
alias c_ulong speed_t;
alias c_ulong tcflag_t;
enum NCCS = 20;
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t[NCCS] c_cc;
speed_t c_ispeed;
speed_t c_ospeed;
}
enum VEOF = 0;
enum VEOL = 1;
enum VERASE = 3;
enum VINTR = 8;
enum VKILL = 5;
enum VMIN = 16;
enum VQUIT = 9;
enum VSTART = 12;
enum VSTOP = 13;
enum VSUSP = 10;
enum VTIME = 17;
enum BRKINT = 0x0000002;
enum ICRNL = 0x0000100;
enum IGNBRK = 0x0000001;
enum IGNCR = 0x0000080;
enum IGNPAR = 0x0000004;
enum INLCR = 0x0000040;
enum INPCK = 0x0000010;
enum ISTRIP = 0x0000020;
enum IXOFF = 0x0000400;
enum IXON = 0x0000200;
enum PARMRK = 0x0000008;
enum OPOST = 0x0000001;
enum B0 = 0;
enum B50 = 50;
enum B75 = 75;
enum B110 = 110;
enum B134 = 134;
enum B150 = 150;
enum B200 = 200;
enum B300 = 300;
enum B600 = 600;
enum B1200 = 1200;
enum B1800 = 1800;
enum B2400 = 2400;
enum B4800 = 4800;
enum B9600 = 9600;
enum B19200 = 19200;
enum B38400 = 38400;
enum CSIZE = 0x0000300;
enum CS5 = 0x0000000;
enum CS6 = 0x0000100;
enum CS7 = 0x0000200;
enum CS8 = 0x0000300;
enum CSTOPB = 0x0000400;
enum CREAD = 0x0000800;
enum PARENB = 0x0001000;
enum PARODD = 0x0002000;
enum HUPCL = 0x0004000;
enum CLOCAL = 0x0008000;
enum ECHO = 0x00000008;
enum ECHOE = 0x00000002;
enum ECHOK = 0x00000004;
enum ECHONL = 0x00000010;
enum ICANON = 0x00000100;
enum IEXTEN = 0x00000400;
enum ISIG = 0x00000080;
enum NOFLSH = 0x80000000;
enum TOSTOP = 0x00400000;
enum TCSANOW = 0;
enum TCSADRAIN = 1;
enum TCSAFLUSH = 2;
enum TCIFLUSH = 1;
enum TCOFLUSH = 2;
enum TCIOFLUSH = 3;
enum TCIOFF = 3;
enum TCION = 4;
enum TCOOFF = 1;
enum TCOON = 2;
speed_t cfgetispeed(const scope termios*);
speed_t cfgetospeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int cfsetospeed(termios*, speed_t);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, termios*);
int tcsendbreak(int, int);
int tcsetattr(int, int, const scope termios*);
}
else version (FreeBSD)
{
alias ubyte cc_t;
alias uint speed_t;
alias uint tcflag_t;
enum NCCS = 20;
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t[NCCS] c_cc;
speed_t c_ispeed;
speed_t c_ospeed;
}
enum VEOF = 0;
enum VEOL = 1;
enum VERASE = 3;
enum VINTR = 8;
enum VKILL = 5;
enum VMIN = 16;
enum VQUIT = 9;
enum VSTART = 12;
enum VSTOP = 13;
enum VSUSP = 10;
enum VTIME = 17;
enum BRKINT = 0x0000002;
enum ICRNL = 0x0000100;
enum IGNBRK = 0x0000001;
enum IGNCR = 0x0000080;
enum IGNPAR = 0x0000004;
enum INLCR = 0x0000040;
enum INPCK = 0x0000010;
enum ISTRIP = 0x0000020;
enum IXOFF = 0x0000400;
enum IXON = 0x0000200;
enum PARMRK = 0x0000008;
enum OPOST = 0x0000001;
enum B0 = 0;
enum B50 = 50;
enum B75 = 75;
enum B110 = 110;
enum B134 = 134;
enum B150 = 150;
enum B200 = 200;
enum B300 = 300;
enum B600 = 600;
enum B1200 = 1200;
enum B1800 = 1800;
enum B2400 = 2400;
enum B4800 = 4800;
enum B9600 = 9600;
enum B19200 = 19200;
enum B38400 = 38400;
enum CSIZE = 0x0000300;
enum CS5 = 0x0000000;
enum CS6 = 0x0000100;
enum CS7 = 0x0000200;
enum CS8 = 0x0000300;
enum CSTOPB = 0x0000400;
enum CREAD = 0x0000800;
enum PARENB = 0x0001000;
enum PARODD = 0x0002000;
enum HUPCL = 0x0004000;
enum CLOCAL = 0x0008000;
enum ECHO = 0x00000008;
enum ECHOE = 0x00000002;
enum ECHOK = 0x00000004;
enum ECHONL = 0x00000010;
enum ICANON = 0x00000100;
enum IEXTEN = 0x00000400;
enum ISIG = 0x00000080;
enum NOFLSH = 0x80000000;
enum TOSTOP = 0x00400000;
enum TCSANOW = 0;
enum TCSADRAIN = 1;
enum TCSAFLUSH = 2;
enum TCIFLUSH = 1;
enum TCOFLUSH = 2;
enum TCIOFLUSH = 3;
enum TCIOFF = 3;
enum TCION = 4;
enum TCOOFF = 1;
enum TCOON = 2;
speed_t cfgetispeed(const scope termios*);
speed_t cfgetospeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int cfsetospeed(termios*, speed_t);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, termios*);
int tcsendbreak(int, int);
int tcsetattr(int, int, const scope termios*);
}
else version (DragonFlyBSD)
{
alias ubyte cc_t;
alias uint speed_t;
alias uint tcflag_t;
enum NCCS = 20;
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t[NCCS] c_cc;
speed_t c_ispeed;
speed_t c_ospeed;
}
enum VEOF = 0;
enum VEOL = 1;
enum VERASE = 3;
enum VINTR = 8;
enum VKILL = 5;
enum VMIN = 16;
enum VQUIT = 9;
enum VSTART = 12;
enum VSTOP = 13;
enum VSUSP = 10;
enum VTIME = 17;
enum BRKINT = 0x0000002;
enum ICRNL = 0x0000100;
enum IGNBRK = 0x0000001;
enum IGNCR = 0x0000080;
enum IGNPAR = 0x0000004;
enum INLCR = 0x0000040;
enum INPCK = 0x0000010;
enum ISTRIP = 0x0000020;
enum IXOFF = 0x0000400;
enum IXON = 0x0000200;
enum PARMRK = 0x0000008;
enum OPOST = 0x0000001;
enum B0 = 0;
enum B50 = 50;
enum B75 = 75;
enum B110 = 110;
enum B134 = 134;
enum B150 = 150;
enum B200 = 200;
enum B300 = 300;
enum B600 = 600;
enum B1200 = 1200;
enum B1800 = 1800;
enum B2400 = 2400;
enum B4800 = 4800;
enum B9600 = 9600;
enum B19200 = 19200;
enum B38400 = 38400;
enum CSIZE = 0x0000300;
enum CS5 = 0x0000000;
enum CS6 = 0x0000100;
enum CS7 = 0x0000200;
enum CS8 = 0x0000300;
enum CSTOPB = 0x0000400;
enum CREAD = 0x0000800;
enum PARENB = 0x0001000;
enum PARODD = 0x0002000;
enum HUPCL = 0x0004000;
enum CLOCAL = 0x0008000;
enum ECHO = 0x00000008;
enum ECHOE = 0x00000002;
enum ECHOK = 0x00000004;
enum ECHONL = 0x00000010;
enum ICANON = 0x00000100;
enum IEXTEN = 0x00000400;
enum ISIG = 0x00000080;
enum NOFLSH = 0x80000000;
enum TOSTOP = 0x00400000;
enum TCSANOW = 0;
enum TCSADRAIN = 1;
enum TCSAFLUSH = 2;
enum TCIFLUSH = 1;
enum TCOFLUSH = 2;
enum TCIOFLUSH = 3;
enum TCIOFF = 3;
enum TCION = 4;
enum TCOOFF = 1;
enum TCOON = 2;
speed_t cfgetispeed(const scope termios*);
speed_t cfgetospeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int cfsetospeed(termios*, speed_t);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, termios*);
int tcsendbreak(int, int);
int tcsetattr(int, int, const scope termios*);
}
else version (NetBSD)
{
alias ubyte cc_t;
alias uint speed_t;
alias uint tcflag_t;
enum NCCS = 20;
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t[NCCS] c_cc;
speed_t c_ispeed;
speed_t c_ospeed;
}
enum VEOF = 0;
enum VEOL = 1;
enum VERASE = 3;
enum VINTR = 8;
enum VKILL = 5;
enum VMIN = 16;
enum VQUIT = 9;
enum VSTART = 12;
enum VSTOP = 13;
enum VSUSP = 10;
enum VTIME = 17;
enum BRKINT = 0x0000002;
enum ICRNL = 0x0000100;
enum IGNBRK = 0x0000001;
enum IGNCR = 0x0000080;
enum IGNPAR = 0x0000004;
enum INLCR = 0x0000040;
enum INPCK = 0x0000010;
enum ISTRIP = 0x0000020;
enum IXOFF = 0x0000400;
enum IXON = 0x0000200;
enum PARMRK = 0x0000008;
enum OPOST = 0x0000001;
enum B0 = 0;
enum B50 = 50;
enum B75 = 75;
enum B110 = 110;
enum B134 = 134;
enum B150 = 150;
enum B200 = 200;
enum B300 = 300;
enum B600 = 600;
enum B1200 = 1200;
enum B1800 = 1800;
enum B2400 = 2400;
enum B4800 = 4800;
enum B9600 = 9600;
enum B19200 = 19200;
enum B38400 = 38400;
enum CSIZE = 0x0000300;
enum CS5 = 0x0000000;
enum CS6 = 0x0000100;
enum CS7 = 0x0000200;
enum CS8 = 0x0000300;
enum CSTOPB = 0x0000400;
enum CREAD = 0x0000800;
enum PARENB = 0x0001000;
enum PARODD = 0x0002000;
enum HUPCL = 0x0004000;
enum CLOCAL = 0x0008000;
enum ECHO = 0x00000008;
enum ECHOE = 0x00000002;
enum ECHOK = 0x00000004;
enum ECHONL = 0x00000010;
enum ICANON = 0x00000100;
enum IEXTEN = 0x00000400;
enum ISIG = 0x00000080;
enum NOFLSH = 0x80000000;
enum TOSTOP = 0x00400000;
enum TCSANOW = 0;
enum TCSADRAIN = 1;
enum TCSAFLUSH = 2;
enum TCIFLUSH = 1;
enum TCOFLUSH = 2;
enum TCIOFLUSH = 3;
enum TCIOFF = 3;
enum TCION = 4;
enum TCOOFF = 1;
enum TCOON = 2;
speed_t cfgetispeed(const scope termios*);
speed_t cfgetospeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int cfsetospeed(termios*, speed_t);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, termios*);
int tcsendbreak(int, int);
int tcsetattr(int, int, const scope termios*);
}
else version (OpenBSD)
{
alias uint tcflag_t;
alias ubyte cc_t;
alias uint speed_t;
enum NCCS = 20;
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t[NCCS] c_cc;
int c_ispeed;
int c_ospeed;
}
enum VEOF = 0;
enum VEOL = 1;
enum VERASE = 3;
enum VINTR = 8;
enum VKILL = 5;
enum VMIN = 16;
enum VQUIT = 9;
enum VSTART = 12;
enum VSTOP = 13;
enum VSUSP = 10;
enum VTIME = 17;
enum BRKINT = 0x0000002;
enum ICRNL = 0x0000100;
enum IGNBRK = 0x0000001;
enum IGNCR = 0x0000080;
enum IGNPAR = 0x0000004;
enum INLCR = 0x0000040;
enum INPCK = 0x0000010;
enum ISTRIP = 0x0000020;
enum IXOFF = 0x0000400;
enum IXON = 0x0000200;
enum PARMRK = 0x0000008;
enum OPOST = 0x0000001;
enum B0 = 0;
enum B50 = 50;
enum B75 = 75;
enum B110 = 110;
enum B134 = 134;
enum B150 = 150;
enum B200 = 200;
enum B300 = 300;
enum B600 = 600;
enum B1200 = 1200;
enum B1800 = 1800;
enum B2400 = 2400;
enum B4800 = 4800;
enum B9600 = 9600;
enum B19200 = 19200;
enum B38400 = 38400;
enum CSIZE = 0x0000300;
enum CS5 = 0x0000000;
enum CS6 = 0x0000100;
enum CS7 = 0x0000200;
enum CS8 = 0x0000300;
enum CSTOPB = 0x0000400;
enum CREAD = 0x0000800;
enum PARENB = 0x0001000;
enum PARODD = 0x0002000;
enum HUPCL = 0x0004000;
enum CLOCAL = 0x0008000;
enum ECHO = 0x00000008;
enum ECHOE = 0x00000002;
enum ECHOK = 0x00000004;
enum ECHONL = 0x00000010;
enum ICANON = 0x00000100;
enum IEXTEN = 0x00000400;
enum ISIG = 0x00000080;
enum NOFLSH = 0x80000000;
enum TOSTOP = 0x00400000;
enum TCSANOW = 0;
enum TCSADRAIN = 1;
enum TCSAFLUSH = 2;
enum TCIFLUSH = 1;
enum TCOFLUSH = 2;
enum TCIOFLUSH = 3;
enum TCIOFF = 3;
enum TCION = 4;
enum TCOOFF = 1;
enum TCOON = 2;
speed_t cfgetispeed(const scope termios*);
speed_t cfgetospeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int cfsetospeed(termios*, speed_t);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, termios*);
int tcsendbreak(int, int);
int tcsetattr(int, int, const scope termios*);
}
else version (Solaris)
{
alias tcflag_t = uint;
alias cc_t = ubyte;
alias speed_t = uint;
enum NCCS = 19;
struct termios
{
tcflag_t c_iflag; /* input modes */
tcflag_t c_oflag; /* output modes */
tcflag_t c_cflag; /* control modes */
tcflag_t c_lflag; /* line discipline modes */
cc_t[NCCS] c_cc; /* control chars */
}
/* control characters */
enum VINTR = 0;
enum VQUIT = 1;
enum VERASE = 2;
enum VKILL = 3;
enum VEOF = 4;
enum VEOL = 5;
enum VMIN = 4;
enum VTIME = 5;
enum VSTART = 8;
enum VSTOP = 9;
enum VSUSP = 10;
/* input modes */
enum IGNBRK = 0x000001;
enum BRKINT = 0x000002;
enum IGNPAR = 0x000004;
enum PARMRK = 0x000008;
enum INPCK = 0x000010;
enum ISTRIP = 0x000020;
enum INLCR = 0x000040;
enum IGNCR = 0x000080;
enum ICRNL = 0x000100;
enum IXON = 0x000400;
enum IXOFF = 0x001000;
/* output modes */
enum OPOST = 0x000001;
/* control modes */
enum CSIZE = 0x000030;
enum CS5 = 0x000000;
enum CS6 = 0x000010;
enum CS7 = 0x000020;
enum CS8 = 0x000030;
enum CSTOPB = 0x000040;
enum CREAD = 0x000080;
enum PARENB = 0x000100;
enum PARODD = 0x000200;
enum HUPCL = 0x000400;
enum CLOCAL = 0x000800;
enum CRTSCTS = 0x10000000;
/* line discipline 0 modes */
enum ISIG = 0x000001;
enum ICANON = 0x000002;
enum ECHO = 0x000008;
enum ECHOE = 0x000010;
enum ECHOK = 0x000020;
enum ECHONL = 0x000040;
enum NOFLSH = 0x000080;
enum TOSTOP = 0x000100;
enum ECHOCTL = 0x000200;
enum ECHOPRT = 0x000400;
enum ECHOKE = 0x000800;
enum IEXTEN = 0x008000; /* POSIX flag - enable POSIX extensions */
enum _TIOC = ('T'<<8);
enum TCSANOW = (_TIOC|14);
enum TCSADRAIN = (_TIOC|15);
enum TCSAFLUSH = (_TIOC|16);
/* termios option flags */
enum TCIFLUSH = 0; /* flush data received but not read */
enum TCOFLUSH = 1; /* flush data written but not transmitted */
enum TCIOFLUSH = 2; /* flush both data both input and output queues */
enum TCOOFF = 0; /* suspend output */
enum TCOON = 1; /* restart suspended output */
enum TCIOFF = 2; /* suspend input */
enum TCION = 3; /* restart suspended input */
/* Speeds */
enum B0 = 0;
enum B50 = 1;
enum B75 = 2;
enum B110 = 3;
enum B134 = 4;
enum B150 = 5;
enum B200 = 6;
enum B300 = 7;
enum B600 = 8;
enum B1200 = 9;
enum B1800 = 10;
enum B2400 = 11;
enum B4800 = 12;
enum B9600 = 13;
enum B19200 = 14;
enum B38400 = 15;
enum B57600 = 16;
enum B76800 = 17;
enum B115200 = 18;
enum B153600 = 19;
enum B230400 = 20;
enum B307200 = 21;
enum B460800 = 22;
enum B921600 = 23;
/*
* POSIX termios functions
* These functions get mapped into ioctls.
*/
speed_t cfgetospeed(const scope termios*);
int cfsetospeed(termios*, speed_t);
speed_t cfgetispeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int tcgetattr(int, termios*);
int tcsetattr(int, int, const scope termios*);
int tcsendbreak(int, int);
int tcdrain(int);
int tcflush(int, int);
int tcflow(int, int);
}
else version (CRuntime_UClibc)
{
alias ubyte cc_t;
alias uint speed_t;
alias uint tcflag_t;
enum NCCS = 32;
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_line;
cc_t[NCCS] c_cc;
speed_t c_ispeed;
speed_t c_ospeed;
}
enum VINTR = 0;
enum VQUIT = 1;
enum VERASE = 2;
enum VKILL = 3;
enum VEOF = 4;
enum VTIME = 5;
enum VMIN = 6;
enum VSWTC = 7;
enum VSTART = 8;
enum VSTOP = 9;
enum VSUSP = 10;
enum VEOL = 11;
enum VREPRINT = 12;
enum VDISCARD = 13;
enum VWERASE = 14;
enum VLNEXT = 15;
enum VEOL2 = 16;
enum BRKINT = 0x0000002; // 0000002
enum ICRNL = 0x0000100; // 0000400
enum IGNBRK = 0x0000001; // 0000001
enum IGNCR = 0x0000080; // 0000200
enum IGNPAR = 0x0000004; // 0000004
enum INLCR = 0x0000040; // 0000100
enum INPCK = 0x0000010; // 0000020
enum ISTRIP = 0x0000020; // 0000040
enum IXOFF = 0x0001000; // 0010000
enum IXON = 0x0000400; // 0002000
enum PARMRK = 0x0000008; // 0000010
enum OPOST = 0x0000001; // 0000001
enum B0 = 0x0000000; // 0000000
enum B50 = 0x0000001; // 0000001
enum B75 = 0x0000002; // 0000002
enum B110 = 0x0000003; // 0000003
enum B134 = 0x0000004; // 0000004
enum B150 = 0x0000005; // 0000005
enum B200 = 0x0000006; // 0000006
enum B300 = 0x0000007; // 0000007
enum B600 = 0x0000008; // 0000010
enum B1200 = 0x0000009; // 0000011
enum B1800 = 0x000000A; // 0000012
enum B2400 = 0x000000B; // 0000013
enum B4800 = 0x000000C; // 0000014
enum B9600 = 0x000000D; // 0000015
enum B19200 = 0x000000E; // 0000016
enum B38400 = 0x000000F; // 0000017
enum CSIZE = 0x0000030; // 0000060
enum CS5 = 0x0000000; // 0000000
enum CS6 = 0x0000010; // 0000020
enum CS7 = 0x0000020; // 0000040
enum CS8 = 0x0000030; // 0000060
enum CSTOPB = 0x0000040; // 0000100
enum CREAD = 0x0000080; // 0000200
enum PARENB = 0x0000100; // 0000400
enum PARODD = 0x0000200; // 0001000
enum HUPCL = 0x0000400; // 0002000
enum CLOCAL = 0x0000800; // 0004000
enum ECHO = 0x0000008; // 0000010
enum ECHOE = 0x0000010; // 0000020
enum ECHOK = 0x0000020; // 0000040
enum ECHONL = 0x0000040; // 0000100
enum ICANON = 0x0000002; // 0000002
enum IEXTEN = 0x0008000; // 0100000
enum ISIG = 0x0000001; // 0000001
enum NOFLSH = 0x0000080; // 0000200
enum TOSTOP = 0x0000100; // 0000400
enum TCSANOW = 0;
enum TCSADRAIN = 1;
enum TCSAFLUSH = 2;
enum TCIFLUSH = 0;
enum TCOFLUSH = 1;
enum TCIOFLUSH = 2;
enum TCIOFF = 2;
enum TCION = 3;
enum TCOOFF = 0;
enum TCOON = 1;
speed_t cfgetispeed(const scope termios*);
speed_t cfgetospeed(const scope termios*);
int cfsetispeed(termios*, speed_t);
int cfsetospeed(termios*, speed_t);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, termios*);
int tcsendbreak(int, int);
int tcsetattr(int, int, const scope termios*);
}
//
// XOpen (XSI)
//
/*
IXANY
ONLCR
OCRNL
ONOCR
ONLRET
OFILL
NLDLY
NL0
NL1
CRDLY
CR0
CR1
CR2
CR3
TABDLY
TAB0
TAB1
TAB2
TAB3
BSDLY
BS0
BS1
VTDLY
VT0
VT1
FFDLY
FF0
FF1
pid_t tcgetsid(int);
*/
version (CRuntime_Glibc)
{
enum IXANY = 0x0000800; // 0004000
enum ONLCR = 0x0000004; // 0000004
enum OCRNL = 0x0000008; // 0000010
enum ONOCR = 0x0000010; // 0000020
enum ONLRET = 0x0000020; // 0000040
enum OFILL = 0x0000040; // 0000100
enum NLDLY = 0x0000100; // 0000400
enum NL0 = 0x0000000; // 0000000
enum NL1 = 0x0000100; // 0000400
enum CRDLY = 0x0000600; // 0003000
enum CR0 = 0x0000000; // 0000000
enum CR1 = 0x0000200; // 0001000
enum CR2 = 0x0000400; // 0002000
enum CR3 = 0x0000600; // 0003000
enum TABDLY = 0x0001800; // 0014000
enum TAB0 = 0x0000000; // 0000000
enum TAB1 = 0x0000800; // 0004000
enum TAB2 = 0x0001000; // 0010000
enum TAB3 = 0x0001800; // 0014000
enum BSDLY = 0x0002000; // 0020000
enum BS0 = 0x0000000; // 0000000
enum BS1 = 0x0002000; // 0020000
enum VTDLY = 0x0004000; // 0040000
enum VT0 = 0x0000000; // 0000000
enum VT1 = 0x0004000; // 0040000
enum FFDLY = 0x0008000; // 0100000
enum FF0 = 0x0000000; // 0000000
enum FF1 = 0x0008000; // 0100000
pid_t tcgetsid(int);
}
else version (Darwin)
{
enum IXANY = 0x00000800;
enum ONLCR = 0x00000002;
enum OCRNL = 0x00000010;
enum ONOCR = 0x00000020;
enum ONLRET = 0x00000040;
enum OFILL = 0x00000080;
enum NLDLY = 0x00000300;
enum NL0 = 0x00000000;
enum NL1 = 0x00000100;
enum CRDLY = 0x00003000;
enum CR0 = 0x00000000;
enum CR1 = 0x00001000;
enum CR2 = 0x00002000;
enum CR3 = 0x00003000;
enum TABDLY = 0x00000c04;
enum TAB0 = 0x00000000;
enum TAB1 = 0x00000400;
enum TAB2 = 0x00000800;
enum TAB3 = 0x00000004;
enum BSDLY = 0x00008000;
enum BS0 = 0x00000000;
enum BS1 = 0x00008000;
enum VTDLY = 0x00010000;
enum VT0 = 0x00000000;
enum VT1 = 0x00010000;
enum FFDLY = 0x00004000;
enum FF0 = 0x00000000;
enum FF1 = 0x00004000;
pid_t tcgetsid (int);
}
else version (FreeBSD)
{
enum IXANY = 0x00000800;
enum ONLCR = 0x00000002;
enum OCRNL = 0x00000010;
enum ONOCR = 0x00000020;
enum ONLRET = 0x00000040;
//enum OFILL
//enum NLDLY
//enum NL0
//enum NL1
//enum CRDLY
//enum CR0
//enum CR1
//enum CR2
//enum CR3
enum TABDLY = 0x00000004;
enum TAB0 = 0x00000000;
//enum TAB1
//enum TAB2
enum TAB3 = 0x00000004;
//enum BSDLY
//enum BS0
//enum BS1
//enum VTDLY
//enum VT0
//enum VT1
//enum FFDLY
//enum FF0
//enum FF1
pid_t tcgetsid(int);
}
else version (DragonFlyBSD)
{
enum IXANY = 0x00000800;
enum ONLCR = 0x00000002;
enum OCRNL = 0x00000010;
enum ONOCR = 0x00000020;
enum ONLRET = 0x00000040;
//enum OFILL
//enum NLDLY
//enum NL0
//enum NL1
//enum CRDLY
//enum CR0
//enum CR1
//enum CR2
//enum CR3
enum TABDLY = 0x00000004;
enum TAB0 = 0x00000000;
//enum TAB1
//enum TAB2
enum TAB3 = 0x00000004;
//enum BSDLY
//enum BS0
//enum BS1
//enum VTDLY
//enum VT0
//enum VT1
//enum FFDLY
//enum FF0
//enum FF1
pid_t tcgetsid(int);
}
else version (NetBSD)
{
enum IXANY = 0x00000800;
enum ONLCR = 0x00000002;
enum OCRNL = 0x00000010;
enum ONOCR = 0x00000020;
enum ONLRET = 0x00000040;
//enum OFILL
//enum NLDLY
//enum NL0
//enum NL1
//enum CRDLY
//enum CR0
//enum CR1
//enum CR2
//enum CR3
enum TABDLY = 0x00000004;
enum TAB0 = 0x00000000;
//enum TAB1
//enum TAB2
enum TAB3 = 0x00000004;
//enum BSDLY
//enum BS0
//enum BS1
//enum VTDLY
//enum VT0
//enum VT1
//enum FFDLY
//enum FF0
//enum FF1
pid_t tcgetsid(int);
}
else version (OpenBSD)
{
enum IXANY = 0x00000800;
enum ONLCR = 0x00000002;
enum OCRNL = 0x00000010;
enum ONOCR = 0x00000040;
enum ONLRET = 0x00000080;
//enum OFILL
//enum NLDLY
//enum NL0
//enum NL1
//enum CRDLY
//enum CR0
//enum CR1
//enum CR2
//enum CR3
//enum TABDLY
//enum TAB0
//enum TAB1
//enum TAB2
//enum TAB3
//enum BSDLY
//enum BS0
//enum BS1
//enum VTDLY
//enum VT0
//enum VT1
//enum FFDLY
//enum FF0
//enum FF1
pid_t tcgetsid(int);
}
else version (Solaris)
{
enum IXANY = 0x0000800;
enum ONLCR = 0x0000004;
enum OCRNL = 0x0000008;
enum ONOCR = 0x0000010;
enum ONLRET = 0x0000020;
enum OFILL = 0x0000040;
enum OFDEL = 0x0000080;
enum NLDLY = 0x0000100;
enum NL0 = 0x0000000;
enum NL1 = 0x0000100;
enum CRDLY = 0x0000600;
enum CR0 = 0x0000000;
enum CR1 = 0x0000200;
enum CR2 = 0x0000400;
enum CR3 = 0x0000600;
enum TABDLY = 0x0001800;
enum TAB0 = 0x0000000;
enum TAB1 = 0x0000800;
enum TAB2 = 0x0001000;
enum TAB3 = 0x0001800;
enum BSDLY = 0x0002000;
enum BS0 = 0x0000000;
enum BS1 = 0x0002000;
enum VTDLY = 0x0004000;
enum VT0 = 0x0000000;
enum VT1 = 0x0004000;
enum FFDLY = 0x0008000;
enum FF0 = 0x0000000;
enum FF1 = 0x0008000;
enum XCASE = 0x0000004;
pid_t tcgetsid(int);
}
else version (CRuntime_UClibc)
{
enum IXANY = 0x0000800; // 0004000
enum ONLCR = 0x0000004; // 0000004
enum OCRNL = 0x0000008; // 0000010
enum ONOCR = 0x0000010; // 0000020
enum ONLRET = 0x0000020; // 0000040
enum OFILL = 0x0000040; // 0000100
enum NLDLY = 0x0000100; // 0000400
enum NL0 = 0x0000000; // 0000000
enum NL1 = 0x0000100; // 0000400
enum CRDLY = 0x0000600; // 0003000
enum CR0 = 0x0000000; // 0000000
enum CR1 = 0x0000200; // 0001000
enum CR2 = 0x0000400; // 0002000
enum CR3 = 0x0000600; // 0003000
enum TABDLY = 0x0001800; // 0014000
enum TAB0 = 0x0000000; // 0000000
enum TAB1 = 0x0000800; // 0004000
enum TAB2 = 0x0001000; // 0010000
enum TAB3 = 0x0001800; // 0014000
enum BSDLY = 0x0002000; // 0020000
enum BS0 = 0x0000000; // 0000000
enum BS1 = 0x0002000; // 0020000
enum VTDLY = 0x0004000; // 0040000
enum VT0 = 0x0000000; // 0000000
enum VT1 = 0x0004000; // 0040000
enum FFDLY = 0x0008000; // 0100000
enum FF0 = 0x0000000; // 0000000
enum FF1 = 0x0008000; // 0100000
pid_t tcgetsid(int);
}