#ifndef ISO
type cc_t
type speed_t
type tcflag_t

type {struct termios}

#if defined XOPEN2K8 || defined POSIX2008
type pid_t
#endif

element {struct termios} tcflag_t c_iflag
element {struct termios} tcflag_t c_oflag
element {struct termios} tcflag_t c_cflag
element {struct termios} tcflag_t c_lflag
element {struct termios} cc_t c_cc[NCCS]

constant NCCS

constant VEOF
constant VEOL
constant VERASE
constant VINTR
constant VKILL
constant VMIN
constant VQUIT
constant VSTART
constant VSTOP
constant VSUSP
constant VTIME

constant BRKINT
constant ICRNL
constant IGNBRK
constant IGNCR
constant IGNPAR
constant INLCR
constant INPCK
constant ISTRIP
# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant IUCLC
# <endif
constant IXANY
constant IXOFF
constant IXON
constant PARMRK

constant OPOST
# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant OLCUC
# endif
# if !defined POSIX && !defined POSIX2008
constant ONLCR
constant OCRNL
constant ONOCR
constant ONLRET
constant OFDEL
constant OFILL
constant NLDLY
constant NL0
constant NL1
constant CRDLY
constant CR0
constant CR1
constant CR2
constant CR3
constant TABDLY
constant TAB0
constant TAB1
constant TAB2
constant TAB3
constant BSDLY
constant BS0
constant BS1
constant VTDLY
constant VT0
constant VT1
constant FFDLY
constant FF0
constant FF1
# endif

constant B0
constant B50
constant B75
constant B110
constant B134
constant B150
constant B200
constant B300
constant B600
constant B1200
constant B1800
constant B2400
constant B4800
constant B9600
constant B19200
constant B38400

constant CSIZE
constant CS5
constant CS6
constant CS7
constant CS8
constant CSTOPB
constant CREAD
constant PARENB
constant PARODD
constant HUPCL
constant CLOCAL

constant ECHO
constant ECHOE
constant ECHOK
constant ECHONL
constant ICANON
constant IEXTEN
constant ISIG
constant NOFLSH
constant TOSTOP
# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant XCASE
# endif

constant TCSANOW
constant TCSADRAIN
constant TCSAFLUSH

constant TCIFLUSH
constant TCIOFLUSH

constant TCIOFF
constant TCION
constant TCOOFF
constant TCOON

function speed_t cfgetispeed (const struct termios*)
function speed_t cfgetospeed (const struct termios*)
function int cfsetispeed (struct termios*, speed_t)
function int cfsetospeed (struct termios*, speed_t)
function int tcdrain (int)
function int tcflow (int, int)
function int tcflush (int, int)
function int tcgetattr (int, struct termios*)
function pid_t tcgetsid (int)
function int tcsendbreak (int, int)
function int tcsetattr (int, int, const struct termios*)

allow CBAUD
allow DEFECHO
allow ECHOCTL
allow ECHOKE
allow ECHOPRT
allow EXTA
allow EXTB
allow FLUSHO
allow LOBLK
allow PENDIN
allow SWTCH
allow VDISCARD
allow VDSUSP
allow VLNEXT
allow VREPRINT
allow VSTATUS
allow VWERASE

allow c_*
allow V*
allow I*
allow O*
allow TC*
allow B*
allow *_t
#endif
