/** * 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 */ version (linux) { 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; } 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; } 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; } 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; } 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; } 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; } 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; } /* 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) { 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) { 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) { 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) { 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) { 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) { 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) { 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) { 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); }