text: require "./sys/types"
  
  lib LibC
    VEOF      =        4
    VEOL      =       11
    VERASE    =        2
    VINTR     =        0
    VKILL     =        3
    VMIN      =        6
    VQUIT     =        1
    VSTART    =        8
    VSTOP     =        9
    VSUSP     =       10
    BRKINT    = 0o000002
    ICRNL     = 0o000400
    IGNBRK    = 0o000001
    IGNCR     = 0o000200
    IGNPAR    = 0o000004
    INLCR     = 0o000100
    INPCK     = 0o000020
    ISTRIP    = 0o000040
    IXANY     = 0o004000
    IXOFF     = 0o010000
    IXON      = 0o002000
    PARMRK    = 0o000010
    OPOST     = 0o000001
    ONLCR     = 0o000004
    OCRNL     = 0o000010
    ONOCR     = 0o000020
    ONLRET    = 0o000040
    OFDEL     = 0o000200
    OFILL     = 0o000100
    CRDLY     = 0o003000
    CR0       = 0o000000
    CR1       = 0o001000
    CR2       = 0o002000
    CR3       = 0o003000
    TABDLY    = 0o014000
    TAB0      = 0o000000
    TAB1      = 0o004000
    TAB2      = 0o010000
    TAB3      = 0o014000
    BSDLY     = 0o020000
    BS0       = 0o000000
    BS1       = 0o020000
    VTDLY     = 0o040000
    VT0       = 0o000000
    VT1       = 0o040000
    FFDLY     = 0o100000
    FF0       = 0o000000
    FF1       = 0o100000
    NLDLY     = 0o000400
    NL0       = 0o000000
    NL1       = 0o000400
    B0        = 0o000000
    B50       = 0o000001
    B75       = 0o000002
    B110      = 0o000003
    B134      = 0o000004
    B150      = 0o000005
    B200      = 0o000006
    B300      = 0o000007
    B600      = 0o000010
    B1200     = 0o000011
    B1800     = 0o000012
    B2400     = 0o000013
    B4800     = 0o000014
    B9600     = 0o000015
    B19200    = 0o000016
    B38400    = 0o000017
    CSIZE     = 0o000060
    CS5       = 0o000000
    CS6       = 0o000020
    CS7       = 0o000040
    CS8       = 0o000060
    CSTOPB    = 0o000100
    CREAD     = 0o000200
    PARENB    = 0o000400
    PARODD    = 0o001000
    HUPCL     = 0o002000
    CLOCAL    = 0o004000
    ECHO      = 0o000010
    ECHOE     = 0o000020
    ECHOK     = 0o000040
    ECHONL    = 0o000100
    ICANON    = 0o000002
    IEXTEN    = 0o100000
    ISIG      = 0o000001
    NOFLSH    = 0o000200
    TOSTOP    = 0o000400
    TCSANOW   =        0
    TCSADRAIN =        1
    TCSAFLUSH =        2
    TCIFLUSH  =        0
    TCIOFLUSH =        2
    TCOFLUSH  =        1
    TCIOFF    =        2
    TCION     =        3
    TCOOFF    =        0
    TCOON     =        1
  
    alias CcT = Char
    alias SpeedT = UInt
    alias TcflagT = UInt
  
    struct Termios
      c_iflag : TcflagT
      c_oflag : TcflagT
      c_cflag : TcflagT
      c_lflag : TcflagT
      c_line : CcT
      c_cc : StaticArray(CcT, 32)
      __c_ispeed : SpeedT
      __c_ospeed : SpeedT
    end
  
    fun tcgetattr(x0 : Int, x1 : Termios*) : Int
    fun tcsetattr(x0 : Int, x1 : Int, x2 : Termios*) : Int
    fun cfmakeraw(x0 : Termios*) : Void
  end
  