
D front-end changes: - Import dmd v2.101.0-beta.1. - Add predefined version `D_Optimized' when compiling with `-O'. - Shortened method syntax (DIP1043) is now enabled by default. - Array literals assigned to `scope' array variables are now allocated on the stack. - Implement `@system' variables (DIP1035), available behind the preview feature flag `-fpreview=systemvariables'. D runtime changes: - Import druntime v2.101.0-beta.1. Phobos changes: - Import phobos v2.101.0-beta.1. - Added `std.typecons.SafeRefCounted', that can be used in `@safe' code with `-fpreview=dip1000'. gcc/d/ChangeLog: * d-attribs.cc (apply_user_attributes): Update for new front-end interface. * d-builtins.cc (d_init_versions): Predefine `D_Optimized' with compiling with optimizations enabled. * d-lang.cc (d_handle_option): Update for new front-end interface. Handle new option `-fpreview=systemvariables'. * dmd/MERGE: Merge upstream dmd e4f8919591. * dmd/VERSION: Bump version to v2.101.0-beta.1. * expr.cc (ExprVisitor::visit (AssignExp *)): Treat construction of static arrays from a call expression as a simple assignment. (ExprVisitor::visit (ArrayLiteralExp *)): Handle array literals with `scope' storage. * gdc.texi: Update documentation of `-fpreview=' options. * lang.opt (fpreview=shortenedmethods): Remove. (fpreview=systemvariables): New option. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime e4f8919591. * src/MERGE: Merge upstream phobos 3ad507b51. gcc/testsuite/ChangeLog: * gdc.dg/simd19630.d: Move tests with errors to ... * gdc.dg/simd19630b.d: ... here. New test. * gdc.dg/simd19630c.d: New test. * gdc.dg/simd_ctfe.d: Removed. * gdc.dg/simd18867.d: New test. * gdc.dg/simd19788.d: New test. * gdc.dg/simd21469.d: New test. * gdc.dg/simd21672.d: New test. * gdc.dg/simd23077.d: New test. * gdc.dg/simd23084.d: New test. * gdc.dg/simd23085.d: New test. * gdc.dg/torture/simd19632.d: New test. * gdc.dg/torture/simd20041.d: New test. * gdc.dg/torture/simd21673.d: New test. * gdc.dg/torture/simd21676.d: New test. * gdc.dg/torture/simd22438.d: New test. * gdc.dg/torture/simd23009.d: New test. * gdc.dg/torture/simd23077.d: New test. * gdc.dg/torture/simd8.d: New test. * gdc.dg/torture/simd9.d: New test. * gdc.dg/torture/simd_prefetch.d: New test.
1266 lines
30 KiB
D
1266 lines
30 KiB
D
/**
|
|
* 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:
|
|
|
|
//
|
|
// 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);
|
|
}
|