{-# LINE 1 "System/Posix/Terminal/Common.hsc" #-}{-# LANGUAGE CApiFFI #-}{-# LANGUAGE GeneralizedNewtypeDeriving #-}{-# LANGUAGE PatternSynonyms #-}{-# LANGUAGE Trustworthy #-}------------------------------------------------------------------------------- |-- Module : System.Posix.Terminal.Common-- Copyright : (c) The University of Glasgow 2002-- License : BSD-style (see the file libraries/base/LICENSE)---- Maintainer : libraries@haskell.org-- Stability : provisional-- Portability : non-portable (requires POSIX)---- POSIX Terminal support--------------------------------------------------------------------------------- see https://android.googlesource.com/platform/bionic/+/9ae59c0/libc/bionic/pathconf.c#37{-# LINE 24 "System/Posix/Terminal/Common.hsc" #-}moduleSystem.Posix.Terminal.Common(-- * Terminal support-- ** Terminal attributesTerminalAttributes ,getTerminalAttributes ,TerminalState (..),setTerminalAttributes ,CTermios,TerminalMode (..),withoutMode ,withMode ,terminalMode ,bitsPerByte ,withBits ,ControlCharacter (..),controlChar ,withCC ,withoutCC ,inputTime ,withTime ,minInput ,withMinInput ,BaudRate (..,B0 ,B50 ,B75 ,B110 ,B134 ,B150 ,B200 ,B300 ,B600 ,B1200 ,B1800 ,B2400 ,B4800 ,B9600 ,B19200 ,B38400 {-# LINE 74 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 77 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 80 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 81 "System/Posix/Terminal/Common.hsc" #-},B57600{-# LINE 83 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 86 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 87 "System/Posix/Terminal/Common.hsc" #-},B115200{-# LINE 89 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 90 "System/Posix/Terminal/Common.hsc" #-},B230400{-# LINE 92 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 93 "System/Posix/Terminal/Common.hsc" #-},B460800{-# LINE 95 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 96 "System/Posix/Terminal/Common.hsc" #-},B500000{-# LINE 98 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 99 "System/Posix/Terminal/Common.hsc" #-},B576000{-# LINE 101 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 102 "System/Posix/Terminal/Common.hsc" #-},B921600{-# LINE 104 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 105 "System/Posix/Terminal/Common.hsc" #-},B1000000{-# LINE 107 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 108 "System/Posix/Terminal/Common.hsc" #-},B1152000{-# LINE 110 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 111 "System/Posix/Terminal/Common.hsc" #-},B1500000{-# LINE 113 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 114 "System/Posix/Terminal/Common.hsc" #-},B2000000{-# LINE 116 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 117 "System/Posix/Terminal/Common.hsc" #-},B2500000{-# LINE 119 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 120 "System/Posix/Terminal/Common.hsc" #-},B3000000{-# LINE 122 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 123 "System/Posix/Terminal/Common.hsc" #-},B3500000{-# LINE 125 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 126 "System/Posix/Terminal/Common.hsc" #-},B4000000{-# LINE 128 "System/Posix/Terminal/Common.hsc" #-}),inputSpeed ,withInputSpeed ,outputSpeed ,withOutputSpeed ,-- ** Terminal operationssendBreak ,drainOutput ,QueueSelector (..),discardData ,FlowAction (..),controlFlow ,-- ** Process groupsgetTerminalProcessGroupID ,setTerminalProcessGroupID ,-- ** Testing a file descriptorqueryTerminal ,)whereimportData.BitsimportData.CharimportForeign.C.Error(throwErrnoIfMinus1,throwErrnoIfMinus1_)importForeign.C.TypesimportForeign.ForeignPtr(ForeignPtr,withForeignPtr,mallocForeignPtrBytes)importForeign.Marshal.Utils(copyBytes)importForeign.Ptr(Ptr,plusPtr)importForeign.Storable(Storable(..))importSystem.IO.Unsafe(unsafePerformIO)importSystem.Posix.TypesimportSystem.Posix.Internals(CTermios){-# LINE 169 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 171 "System/Posix/Terminal/Common.hsc" #-}-- ------------------------------------------------------------------------------- Terminal attributesnewtypeTerminalAttributes =TerminalAttributes (ForeignPtrCTermios)makeTerminalAttributes ::ForeignPtrCTermios->TerminalAttributes makeTerminalAttributes :: ForeignPtr CTermios -> TerminalAttributes makeTerminalAttributes =ForeignPtr CTermios -> TerminalAttributes TerminalAttributes withTerminalAttributes ::TerminalAttributes ->(PtrCTermios->IOa )->IOa withTerminalAttributes :: forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes (TerminalAttributes ForeignPtr CTermios termios )=ForeignPtr CTermios -> (Ptr CTermios -> IO a) -> IO a forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtrForeignPtr CTermios termios {-# LINE 188 "System/Posix/Terminal/Common.hsc" #-}dataTerminalMode -- input flags=InterruptOnBreak -- ^ @BRKINT@ - Signal interrupt on break|MapCRtoLF -- ^ @ICRNL@ - Map CR to NL on input|IgnoreBreak -- ^ @IGNBRK@ - Ignore break condition|IgnoreCR -- ^ @IGNCR@ - Ignore CR|IgnoreParityErrors -- ^ @IGNPAR@ - Ignore characters with parity errors|MapLFtoCR -- ^ @INLCR@ - Map NL to CR on input|CheckParity -- ^ @INPCK@ - Enable input parity check|StripHighBit -- ^ @ISTRIP@ - Strip character|RestartOnAny -- ^ @IXANY@ - Enable any character to restart output|StartStopInput -- ^ @IXOFF@ - Enable start/stop input control|StartStopOutput -- ^ @IXON@ - Enable start/stop output control|MarkParityErrors -- ^ @PARMRK@ - Mark parity errors-- output flags|ProcessOutput -- ^ @OPOST@ - Post-process output|MapLFtoCRLF -- ^ @ONLCR@ - (XSI) Map NL to CR-NL on output---- @since 2.8.0.0|OutputMapCRtoLF -- ^ @OCRNL@ - (XSI) Map CR to NL on output---- @since 2.8.0.0|NoCRAtColumnZero -- ^ @ONOCR@ - (XSI) No CR output at column 0---- @since 2.8.0.0|ReturnMeansLF -- ^ @ONLRET@ - (XSI) NL performs CR function---- @since 2.8.0.0{-# LINE 220 "System/Posix/Terminal/Common.hsc" #-}|TabDelayMask0-- ^ @TABDLY(TAB0)@ - (XSI) Select horizontal-tab delays: type 0---- @since 2.8.0.0{-# LINE 224 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 225 "System/Posix/Terminal/Common.hsc" #-}|TabDelayMask3-- ^ @TABDLY(TAB3)@ - (XSI) Select horizontal-tab delays: type 3---- @since 2.8.0.0{-# LINE 229 "System/Posix/Terminal/Common.hsc" #-}-- control flags|LocalMode -- ^ @CLOCAL@ - Ignore modem status lines|ReadEnable -- ^ @CREAD@ - Enable receiver|TwoStopBits -- ^ @CSTOPB@ - Send two stop bits, else one|HangupOnClose -- ^ @HUPCL@ - Hang up on last close|EnableParity -- ^ @PARENB@ - Parity enable|OddParity -- ^ @PARODD@ - Odd parity, else even-- local modes|EnableEcho -- ^ @ECHO@ - Enable echo|EchoErase -- ^ @ECHOE@ - Echo erase character as error-correcting backspace|EchoKill -- ^ @ECHOK@ - Echo KILL|EchoLF -- ^ @ECHONL@ - Echo NL|ProcessInput -- ^ @ICANON@ - Canonical input (erase and kill processing)|ExtendedFunctions -- ^ @IEXTEN@ - Enable extended input character processing|KeyboardInterrupts -- ^ @ISIG@ - Enable signals|NoFlushOnInterrupt -- ^ @NOFLSH@ - Disable flush after interrupt or quit|BackgroundWriteInterrupt -- ^ @TOSTOP@ - Send @SIGTTOU@ for background output{-# LINE 276 "System/Posix/Terminal/Common.hsc" #-}withoutMode ::TerminalAttributes ->TerminalMode ->TerminalAttributes withoutMode :: TerminalAttributes -> TerminalMode -> TerminalAttributes withoutMode TerminalAttributes termios TerminalMode InterruptOnBreak =CTcflag -> TerminalAttributes -> TerminalAttributes clearInputFlag (CTcflag 2)TerminalAttributes termios {-# LINE 279 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosMapCRtoLF=clearInputFlag(256)termios{-# LINE 280 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosIgnoreBreak=clearInputFlag(1)termios{-# LINE 281 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosIgnoreCR=clearInputFlag(128)termios{-# LINE 282 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosIgnoreParityErrors=clearInputFlag(4)termios{-# LINE 283 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosMapLFtoCR=clearInputFlag(64)termios{-# LINE 284 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosCheckParity=clearInputFlag(16)termios{-# LINE 285 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosStripHighBit=clearInputFlag(32)termios{-# LINE 286 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosRestartOnAny=clearInputFlag(2048)termios{-# LINE 287 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosStartStopInput=clearInputFlag(4096)termios{-# LINE 288 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosStartStopOutput=clearInputFlag(1024)termios{-# LINE 289 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosMarkParityErrors=clearInputFlag(8)termios{-# LINE 290 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosProcessOutput=clearOutputFlag(1)termios{-# LINE 291 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosMapLFtoCRLF=clearOutputFlag(4)termios{-# LINE 292 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosOutputMapCRtoLF=clearOutputFlag(8)termios{-# LINE 293 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosNoCRAtColumnZero=clearOutputFlag(16)termios{-# LINE 294 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosReturnMeansLF=clearOutputFlag(32)termios{-# LINE 295 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 296 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosTabDelayMask0=clearOutputFlag(0)termios{-# LINE 297 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 298 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 299 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosTabDelayMask3=clearOutputFlag(6144)termios{-# LINE 300 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 301 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosLocalMode=clearControlFlag(2048)termios{-# LINE 302 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosReadEnable=clearControlFlag(128)termios{-# LINE 303 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosTwoStopBits=clearControlFlag(64)termios{-# LINE 304 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosHangupOnClose=clearControlFlag(1024)termios{-# LINE 305 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosEnableParity=clearControlFlag(256)termios{-# LINE 306 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosOddParity=clearControlFlag(512)termios{-# LINE 307 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosEnableEcho=clearLocalFlag(8)termios{-# LINE 308 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosEchoErase=clearLocalFlag(16)termios{-# LINE 309 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosEchoKill=clearLocalFlag(32)termios{-# LINE 310 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosEchoLF=clearLocalFlag(64)termios{-# LINE 311 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosProcessInput=clearLocalFlag(2)termios{-# LINE 312 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosExtendedFunctions=clearLocalFlag(32768)termios{-# LINE 313 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosKeyboardInterrupts=clearLocalFlag(1)termios{-# LINE 314 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosNoFlushOnInterrupt=setLocalFlag(128)termios{-# LINE 315 "System/Posix/Terminal/Common.hsc" #-}withoutModetermiosBackgroundWriteInterrupt=clearLocalFlag(256)termios{-# LINE 316 "System/Posix/Terminal/Common.hsc" #-}withMode ::TerminalAttributes ->TerminalMode ->TerminalAttributes withMode :: TerminalAttributes -> TerminalMode -> TerminalAttributes withMode TerminalAttributes termios TerminalMode InterruptOnBreak =CTcflag -> TerminalAttributes -> TerminalAttributes setInputFlag (CTcflag 2)TerminalAttributes termios {-# LINE 319 "System/Posix/Terminal/Common.hsc" #-} withModetermiosMapCRtoLF=setInputFlag(256)termios{-# LINE 320 "System/Posix/Terminal/Common.hsc" #-} withModetermiosIgnoreBreak=setInputFlag(1)termios{-# LINE 321 "System/Posix/Terminal/Common.hsc" #-} withModetermiosIgnoreCR=setInputFlag(128)termios{-# LINE 322 "System/Posix/Terminal/Common.hsc" #-} withModetermiosIgnoreParityErrors=setInputFlag(4)termios{-# LINE 323 "System/Posix/Terminal/Common.hsc" #-} withModetermiosMapLFtoCR=setInputFlag(64)termios{-# LINE 324 "System/Posix/Terminal/Common.hsc" #-} withModetermiosCheckParity=setInputFlag(16)termios{-# LINE 325 "System/Posix/Terminal/Common.hsc" #-} withModetermiosStripHighBit=setInputFlag(32)termios{-# LINE 326 "System/Posix/Terminal/Common.hsc" #-} withModetermiosRestartOnAny=setInputFlag(2048)termios{-# LINE 327 "System/Posix/Terminal/Common.hsc" #-} withModetermiosStartStopInput=setInputFlag(4096)termios{-# LINE 328 "System/Posix/Terminal/Common.hsc" #-} withModetermiosStartStopOutput=setInputFlag(1024)termios{-# LINE 329 "System/Posix/Terminal/Common.hsc" #-} withModetermiosMarkParityErrors=setInputFlag(8)termios{-# LINE 330 "System/Posix/Terminal/Common.hsc" #-} withModetermiosProcessOutput=setOutputFlag(1)termios{-# LINE 331 "System/Posix/Terminal/Common.hsc" #-} withModetermiosMapLFtoCRLF=setOutputFlag(4)termios{-# LINE 332 "System/Posix/Terminal/Common.hsc" #-} withModetermiosOutputMapCRtoLF=setOutputFlag(8)termios{-# LINE 333 "System/Posix/Terminal/Common.hsc" #-} withModetermiosNoCRAtColumnZero=setOutputFlag(16)termios{-# LINE 334 "System/Posix/Terminal/Common.hsc" #-} withModetermiosReturnMeansLF=setOutputFlag(32)termios{-# LINE 335 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 336 "System/Posix/Terminal/Common.hsc" #-} withModetermiosTabDelayMask0=setOutputFlag(0)termios{-# LINE 337 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 338 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 339 "System/Posix/Terminal/Common.hsc" #-} withModetermiosTabDelayMask3=setOutputFlag(6144)termios{-# LINE 340 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 341 "System/Posix/Terminal/Common.hsc" #-} withModetermiosLocalMode=setControlFlag(2048)termios{-# LINE 342 "System/Posix/Terminal/Common.hsc" #-} withModetermiosReadEnable=setControlFlag(128)termios{-# LINE 343 "System/Posix/Terminal/Common.hsc" #-} withModetermiosTwoStopBits=setControlFlag(64)termios{-# LINE 344 "System/Posix/Terminal/Common.hsc" #-} withModetermiosHangupOnClose=setControlFlag(1024)termios{-# LINE 345 "System/Posix/Terminal/Common.hsc" #-} withModetermiosEnableParity=setControlFlag(256)termios{-# LINE 346 "System/Posix/Terminal/Common.hsc" #-} withModetermiosOddParity=setControlFlag(512)termios{-# LINE 347 "System/Posix/Terminal/Common.hsc" #-} withModetermiosEnableEcho=setLocalFlag(8)termios{-# LINE 348 "System/Posix/Terminal/Common.hsc" #-} withModetermiosEchoErase=setLocalFlag(16)termios{-# LINE 349 "System/Posix/Terminal/Common.hsc" #-} withModetermiosEchoKill=setLocalFlag(32)termios{-# LINE 350 "System/Posix/Terminal/Common.hsc" #-} withModetermiosEchoLF=setLocalFlag(64)termios{-# LINE 351 "System/Posix/Terminal/Common.hsc" #-} withModetermiosProcessInput=setLocalFlag(2)termios{-# LINE 352 "System/Posix/Terminal/Common.hsc" #-} withModetermiosExtendedFunctions=setLocalFlag(32768)termios{-# LINE 353 "System/Posix/Terminal/Common.hsc" #-} withModetermiosKeyboardInterrupts=setLocalFlag(1)termios{-# LINE 354 "System/Posix/Terminal/Common.hsc" #-} withModetermiosNoFlushOnInterrupt=clearLocalFlag(128)termios{-# LINE 355 "System/Posix/Terminal/Common.hsc" #-} withModetermiosBackgroundWriteInterrupt=setLocalFlag(256)termios{-# LINE 356 "System/Posix/Terminal/Common.hsc" #-}terminalMode ::TerminalMode ->TerminalAttributes ->BoolterminalMode :: TerminalMode -> TerminalAttributes -> Bool terminalMode TerminalMode InterruptOnBreak =CTcflag -> TerminalAttributes -> Bool testInputFlag (CTcflag 2){-# LINE 359 "System/Posix/Terminal/Common.hsc" #-}terminalModeMapCRtoLF=testInputFlag(256){-# LINE 360 "System/Posix/Terminal/Common.hsc" #-}terminalModeIgnoreBreak=testInputFlag(1){-# LINE 361 "System/Posix/Terminal/Common.hsc" #-}terminalModeIgnoreCR=testInputFlag(128){-# LINE 362 "System/Posix/Terminal/Common.hsc" #-}terminalModeIgnoreParityErrors=testInputFlag(4){-# LINE 363 "System/Posix/Terminal/Common.hsc" #-}terminalModeMapLFtoCR=testInputFlag(64){-# LINE 364 "System/Posix/Terminal/Common.hsc" #-}terminalModeCheckParity=testInputFlag(16){-# LINE 365 "System/Posix/Terminal/Common.hsc" #-}terminalModeStripHighBit=testInputFlag(32){-# LINE 366 "System/Posix/Terminal/Common.hsc" #-}terminalModeRestartOnAny=testInputFlag(2048){-# LINE 367 "System/Posix/Terminal/Common.hsc" #-}terminalModeStartStopInput=testInputFlag(4096){-# LINE 368 "System/Posix/Terminal/Common.hsc" #-}terminalModeStartStopOutput=testInputFlag(1024){-# LINE 369 "System/Posix/Terminal/Common.hsc" #-}terminalModeMarkParityErrors=testInputFlag(8){-# LINE 370 "System/Posix/Terminal/Common.hsc" #-}terminalModeProcessOutput=testOutputFlag(1){-# LINE 371 "System/Posix/Terminal/Common.hsc" #-}terminalModeMapLFtoCRLF=testOutputFlag(4){-# LINE 372 "System/Posix/Terminal/Common.hsc" #-}terminalModeOutputMapCRtoLF=testOutputFlag(8){-# LINE 373 "System/Posix/Terminal/Common.hsc" #-}terminalModeNoCRAtColumnZero=testOutputFlag(16){-# LINE 374 "System/Posix/Terminal/Common.hsc" #-}terminalModeReturnMeansLF=testOutputFlag(32){-# LINE 375 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 376 "System/Posix/Terminal/Common.hsc" #-}terminalModeTabDelayMask0=testOutputFlag(0){-# LINE 377 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 378 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 379 "System/Posix/Terminal/Common.hsc" #-}terminalModeTabDelayMask3=testOutputFlag(6144){-# LINE 380 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 381 "System/Posix/Terminal/Common.hsc" #-}terminalModeLocalMode=testControlFlag(2048){-# LINE 382 "System/Posix/Terminal/Common.hsc" #-}terminalModeReadEnable=testControlFlag(128){-# LINE 383 "System/Posix/Terminal/Common.hsc" #-}terminalModeTwoStopBits=testControlFlag(64){-# LINE 384 "System/Posix/Terminal/Common.hsc" #-}terminalModeHangupOnClose=testControlFlag(1024){-# LINE 385 "System/Posix/Terminal/Common.hsc" #-}terminalModeEnableParity=testControlFlag(256){-# LINE 386 "System/Posix/Terminal/Common.hsc" #-}terminalModeOddParity=testControlFlag(512){-# LINE 387 "System/Posix/Terminal/Common.hsc" #-}terminalModeEnableEcho=testLocalFlag(8){-# LINE 388 "System/Posix/Terminal/Common.hsc" #-}terminalModeEchoErase=testLocalFlag(16){-# LINE 389 "System/Posix/Terminal/Common.hsc" #-}terminalModeEchoKill=testLocalFlag(32){-# LINE 390 "System/Posix/Terminal/Common.hsc" #-}terminalModeEchoLF=testLocalFlag(64){-# LINE 391 "System/Posix/Terminal/Common.hsc" #-}terminalModeProcessInput=testLocalFlag(2){-# LINE 392 "System/Posix/Terminal/Common.hsc" #-}terminalModeExtendedFunctions=testLocalFlag(32768){-# LINE 393 "System/Posix/Terminal/Common.hsc" #-}terminalModeKeyboardInterrupts=testLocalFlag(1){-# LINE 394 "System/Posix/Terminal/Common.hsc" #-}terminalModeNoFlushOnInterrupt=not.testLocalFlag(128){-# LINE 395 "System/Posix/Terminal/Common.hsc" #-}terminalModeBackgroundWriteInterrupt=testLocalFlag(256){-# LINE 396 "System/Posix/Terminal/Common.hsc" #-}bitsPerByte ::TerminalAttributes ->IntbitsPerByte :: TerminalAttributes -> Int bitsPerByte TerminalAttributes termios =IO Int -> Int forall a. IO a -> a unsafePerformIO(IO Int -> Int) -> IO Int -> Int forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO Int) -> IO Int forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO Int) -> IO Int) -> (Ptr CTermios -> IO Int) -> IO Int forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCTcflag cflag <-((\Ptr CTermios hsc_ptr ->Ptr CTermios -> Int -> IO CTcflag forall b. Ptr b -> Int -> IO CTcflag forall a b. Storable a => Ptr b -> Int -> IO a peekByteOffPtr CTermios hsc_ptr Int 8))Ptr CTermios p {-# LINE 401 "System/Posix/Terminal/Common.hsc" #-}return$!(word2Bits(cflag.&.(48))){-# LINE 402 "System/Posix/Terminal/Common.hsc" #-}whereword2Bits ::CTcflag->Intword2Bits :: CTcflag -> Int word2Bits CTcflag x =ifCTcflag x CTcflag -> CTcflag -> Bool forall a. Eq a => a -> a -> Bool ==(CTcflag 0)thenInt 5{-# LINE 406 "System/Posix/Terminal/Common.hsc" #-}elseifCTcflag x CTcflag -> CTcflag -> Bool forall a. Eq a => a -> a -> Bool ==(CTcflag 16)thenInt 6{-# LINE 407 "System/Posix/Terminal/Common.hsc" #-}elseifCTcflag x CTcflag -> CTcflag -> Bool forall a. Eq a => a -> a -> Bool ==(CTcflag 32)thenInt 7{-# LINE 408 "System/Posix/Terminal/Common.hsc" #-}elseifCTcflag x CTcflag -> CTcflag -> Bool forall a. Eq a => a -> a -> Bool ==(CTcflag 48)thenInt 8{-# LINE 409 "System/Posix/Terminal/Common.hsc" #-}elseInt 0withBits ::TerminalAttributes ->Int->TerminalAttributes withBits :: TerminalAttributes -> Int -> TerminalAttributes withBits TerminalAttributes termios Int bits =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO TerminalAttributes withNewTermios TerminalAttributes termios ((Ptr CTermios -> IO ()) -> IO TerminalAttributes) -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCTcflag cflag <-((\Ptr CTermios hsc_ptr ->Ptr CTermios -> Int -> IO CTcflag forall b. Ptr b -> Int -> IO CTcflag forall a b. Storable a => Ptr b -> Int -> IO a peekByteOffPtr CTermios hsc_ptr Int 8))Ptr CTermios p {-# LINE 415 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr8))p{-# LINE 416 "System/Posix/Terminal/Common.hsc" #-}((cflag.&.complement(48)).|.maskbits){-# LINE 417 "System/Posix/Terminal/Common.hsc" #-}wheremask ::Int->CTcflagmask :: Int -> CTcflag mask Int 5=(CTcflag 0){-# LINE 420 "System/Posix/Terminal/Common.hsc" #-}mask6=(16){-# LINE 421 "System/Posix/Terminal/Common.hsc" #-}mask7=(32){-# LINE 422 "System/Posix/Terminal/Common.hsc" #-}mask8=(48){-# LINE 423 "System/Posix/Terminal/Common.hsc" #-}mask_=error"withBits bit value out of range [5..8]"{-# LINE 426 "System/Posix/Terminal/Common.hsc" #-}dataControlCharacter =EndOfFile -- VEOF|EndOfLine -- VEOL|Erase -- VERASE|Interrupt -- VINTR|Kill -- VKILL|Quit -- VQUIT|Start -- VSTART|Stop -- VSTOP|Suspend -- VSUSP{-# LINE 532 "System/Posix/Terminal/Common.hsc" #-}controlChar ::TerminalAttributes ->ControlCharacter ->MaybeCharcontrolChar :: TerminalAttributes -> ControlCharacter -> Maybe Char controlChar TerminalAttributes termios ControlCharacter cc =IO (Maybe Char) -> Maybe Char forall a. IO a -> a unsafePerformIO(IO (Maybe Char) -> Maybe Char) -> IO (Maybe Char) -> Maybe Char forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO (Maybe Char)) -> IO (Maybe Char) forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO (Maybe Char)) -> IO (Maybe Char)) -> (Ptr CTermios -> IO (Maybe Char)) -> IO (Maybe Char) forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doletc_cc :: Ptr b c_cc =((\Ptr CTermios hsc_ptr ->Ptr CTermios hsc_ptr Ptr CTermios -> Int -> Ptr b forall a b. Ptr a -> Int -> Ptr b `plusPtr`Int 17))Ptr CTermios p {-# LINE 537 "System/Posix/Terminal/Common.hsc" #-}val<-peekElemOffc_cc(cc2Wordcc)ifCCc val CCc -> CCc -> Bool forall a. Eq a => a -> a -> Bool ==((CCc 0)::CCc){-# LINE 539 "System/Posix/Terminal/Common.hsc" #-}thenMaybe Char -> IO (Maybe Char) forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a returnMaybe Char forall a. Maybe a NothingelseMaybe Char -> IO (Maybe Char) forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return(Char -> Maybe Char forall a. a -> Maybe a Just(Int -> Char chr(CCc -> Int forall a. Enum a => a -> Int fromEnumCCc val )))withCC ::TerminalAttributes ->(ControlCharacter ,Char)->TerminalAttributes withCC :: TerminalAttributes -> (ControlCharacter, Char) -> TerminalAttributes withCC TerminalAttributes termios (ControlCharacter cc ,Char c )=IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO TerminalAttributes withNewTermios TerminalAttributes termios ((Ptr CTermios -> IO ()) -> IO TerminalAttributes) -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doletc_cc :: Ptr b c_cc =((\Ptr CTermios hsc_ptr ->Ptr CTermios hsc_ptr Ptr CTermios -> Int -> Ptr b forall a b. Ptr a -> Int -> Ptr b `plusPtr`Int 17))Ptr CTermios p {-# LINE 548 "System/Posix/Terminal/Common.hsc" #-}pokeElemOffc_cc(cc2Wordcc)(fromIntegral(ordc)::CCc)withoutCC ::TerminalAttributes ->ControlCharacter ->TerminalAttributes withoutCC :: TerminalAttributes -> ControlCharacter -> TerminalAttributes withoutCC TerminalAttributes termios ControlCharacter cc =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO TerminalAttributes withNewTermios TerminalAttributes termios ((Ptr CTermios -> IO ()) -> IO TerminalAttributes) -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doletc_cc :: Ptr b c_cc =((\Ptr CTermios hsc_ptr ->Ptr CTermios hsc_ptr Ptr CTermios -> Int -> Ptr b forall a b. Ptr a -> Int -> Ptr b `plusPtr`Int 17))Ptr CTermios p {-# LINE 556 "System/Posix/Terminal/Common.hsc" #-}pokeElemOffc_cc(cc2Wordcc)((0)::CCc){-# LINE 557 "System/Posix/Terminal/Common.hsc" #-}inputTime ::TerminalAttributes ->IntinputTime :: TerminalAttributes -> Int inputTime TerminalAttributes termios =IO Int -> Int forall a. IO a -> a unsafePerformIO(IO Int -> Int) -> IO Int -> Int forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO Int) -> IO Int forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO Int) -> IO Int) -> (Ptr CTermios -> IO Int) -> IO Int forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCCc c <-Ptr CCc -> Int -> IO CCc forall a. Storable a => Ptr a -> Int -> IO a peekElemOff(((\Ptr CTermios hsc_ptr ->Ptr CTermios hsc_ptr Ptr CTermios -> Int -> Ptr CCc forall a b. Ptr a -> Int -> Ptr b `plusPtr`Int 17))Ptr CTermios p )(Int 5){-# LINE 562 "System/Posix/Terminal/Common.hsc" #-}return(fromEnum(c::CCc))withTime ::TerminalAttributes ->Int->TerminalAttributes withTime :: TerminalAttributes -> Int -> TerminalAttributes withTime TerminalAttributes termios Int time =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO TerminalAttributes withNewTermios TerminalAttributes termios ((Ptr CTermios -> IO ()) -> IO TerminalAttributes) -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doletc_cc :: Ptr b c_cc =((\Ptr CTermios hsc_ptr ->Ptr CTermios hsc_ptr Ptr CTermios -> Int -> Ptr b forall a b. Ptr a -> Int -> Ptr b `plusPtr`Int 17))Ptr CTermios p {-# LINE 568 "System/Posix/Terminal/Common.hsc" #-}pokeElemOffc_cc(5)(fromIntegraltime::CCc){-# LINE 569 "System/Posix/Terminal/Common.hsc" #-}minInput ::TerminalAttributes ->IntminInput :: TerminalAttributes -> Int minInput TerminalAttributes termios =IO Int -> Int forall a. IO a -> a unsafePerformIO(IO Int -> Int) -> IO Int -> Int forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO Int) -> IO Int forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO Int) -> IO Int) -> (Ptr CTermios -> IO Int) -> IO Int forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCCc c <-Ptr CCc -> Int -> IO CCc forall a. Storable a => Ptr a -> Int -> IO a peekElemOff(((\Ptr CTermios hsc_ptr ->Ptr CTermios hsc_ptr Ptr CTermios -> Int -> Ptr CCc forall a b. Ptr a -> Int -> Ptr b `plusPtr`Int 17))Ptr CTermios p )(Int 6){-# LINE 574 "System/Posix/Terminal/Common.hsc" #-}return(fromEnum(c::CCc))withMinInput ::TerminalAttributes ->Int->TerminalAttributes withMinInput :: TerminalAttributes -> Int -> TerminalAttributes withMinInput TerminalAttributes termios Int count =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO TerminalAttributes withNewTermios TerminalAttributes termios ((Ptr CTermios -> IO ()) -> IO TerminalAttributes) -> (Ptr CTermios -> IO ()) -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doletc_cc :: Ptr b c_cc =((\Ptr CTermios hsc_ptr ->Ptr CTermios hsc_ptr Ptr CTermios -> Int -> Ptr b forall a b. Ptr a -> Int -> Ptr b `plusPtr`Int 17))Ptr CTermios p {-# LINE 580 "System/Posix/Terminal/Common.hsc" #-}pokeElemOffc_cc(6)(fromIntegralcount::CCc){-# LINE 581 "System/Posix/Terminal/Common.hsc" #-}-- | Serial line baudrate. The set of supported speeds is system-dependent.-- Portable use of the provided pattern synonyms that are outside the list-- mandated by POSIX requires @#ifdef@ guards.---- Applications may need to be prepared to encounter speeds not known at-- compile time, these can be handled generically via the 'BaudRate'-- constructor. In other words, the provided pattern synonyms are not-- necessarily a @COMPLETE@ set.---- All non-zero /pseudo-terminal/ baud rates are functionally equivalent, and-- the @pty@ driver may accept any speed within a suitable range. Requested-- speeds may be rounded up or down to fit into the supported range.--newtypeBaudRate =BaudRate CSpeedderiving(BaudRate -> BaudRate -> Bool (BaudRate -> BaudRate -> Bool) -> (BaudRate -> BaudRate -> Bool) -> Eq BaudRate forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: BaudRate -> BaudRate -> Bool == :: BaudRate -> BaudRate -> Bool $c/= :: BaudRate -> BaudRate -> Bool /= :: BaudRate -> BaudRate -> Bool Eq,Eq BaudRate Eq BaudRate => (BaudRate -> BaudRate -> Ordering) -> (BaudRate -> BaudRate -> Bool) -> (BaudRate -> BaudRate -> Bool) -> (BaudRate -> BaudRate -> Bool) -> (BaudRate -> BaudRate -> Bool) -> (BaudRate -> BaudRate -> BaudRate) -> (BaudRate -> BaudRate -> BaudRate) -> Ord BaudRate BaudRate -> BaudRate -> Bool BaudRate -> BaudRate -> Ordering BaudRate -> BaudRate -> BaudRate forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: BaudRate -> BaudRate -> Ordering compare :: BaudRate -> BaudRate -> Ordering $c< :: BaudRate -> BaudRate -> Bool < :: BaudRate -> BaudRate -> Bool $c<= :: BaudRate -> BaudRate -> Bool <= :: BaudRate -> BaudRate -> Bool $c> :: BaudRate -> BaudRate -> Bool > :: BaudRate -> BaudRate -> Bool $c>= :: BaudRate -> BaudRate -> Bool >= :: BaudRate -> BaudRate -> Bool $cmax :: BaudRate -> BaudRate -> BaudRate max :: BaudRate -> BaudRate -> BaudRate $cmin :: BaudRate -> BaudRate -> BaudRate min :: BaudRate -> BaudRate -> BaudRate Ord,Int -> BaudRate -> ShowS [BaudRate] -> ShowS BaudRate -> [Char] (Int -> BaudRate -> ShowS) -> (BaudRate -> [Char]) -> ([BaudRate] -> ShowS) -> Show BaudRate forall a. (Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> BaudRate -> ShowS showsPrec :: Int -> BaudRate -> ShowS $cshow :: BaudRate -> [Char] show :: BaudRate -> [Char] $cshowList :: [BaudRate] -> ShowS showList :: [BaudRate] -> ShowS Show,Int -> BaudRate BaudRate -> Int BaudRate -> [BaudRate] BaudRate -> BaudRate BaudRate -> BaudRate -> [BaudRate] BaudRate -> BaudRate -> BaudRate -> [BaudRate] (BaudRate -> BaudRate) -> (BaudRate -> BaudRate) -> (Int -> BaudRate) -> (BaudRate -> Int) -> (BaudRate -> [BaudRate]) -> (BaudRate -> BaudRate -> [BaudRate]) -> (BaudRate -> BaudRate -> [BaudRate]) -> (BaudRate -> BaudRate -> BaudRate -> [BaudRate]) -> Enum BaudRate forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a $csucc :: BaudRate -> BaudRate succ :: BaudRate -> BaudRate $cpred :: BaudRate -> BaudRate pred :: BaudRate -> BaudRate $ctoEnum :: Int -> BaudRate toEnum :: Int -> BaudRate $cfromEnum :: BaudRate -> Int fromEnum :: BaudRate -> Int $cenumFrom :: BaudRate -> [BaudRate] enumFrom :: BaudRate -> [BaudRate] $cenumFromThen :: BaudRate -> BaudRate -> [BaudRate] enumFromThen :: BaudRate -> BaudRate -> [BaudRate] $cenumFromTo :: BaudRate -> BaudRate -> [BaudRate] enumFromTo :: BaudRate -> BaudRate -> [BaudRate] $cenumFromThenTo :: BaudRate -> BaudRate -> BaudRate -> [BaudRate] enumFromThenTo :: BaudRate -> BaudRate -> BaudRate -> [BaudRate] Enum,Num BaudRate Ord BaudRate (Num BaudRate, Ord BaudRate) => (BaudRate -> Rational) -> Real BaudRate BaudRate -> Rational forall a. (Num a, Ord a) => (a -> Rational) -> Real a $ctoRational :: BaudRate -> Rational toRational :: BaudRate -> Rational Real,Integer -> BaudRate BaudRate -> BaudRate BaudRate -> BaudRate -> BaudRate (BaudRate -> BaudRate -> BaudRate) -> (BaudRate -> BaudRate -> BaudRate) -> (BaudRate -> BaudRate -> BaudRate) -> (BaudRate -> BaudRate) -> (BaudRate -> BaudRate) -> (BaudRate -> BaudRate) -> (Integer -> BaudRate) -> Num BaudRate forall a. (a -> a -> a) -> (a -> a -> a) -> (a -> a -> a) -> (a -> a) -> (a -> a) -> (a -> a) -> (Integer -> a) -> Num a $c+ :: BaudRate -> BaudRate -> BaudRate + :: BaudRate -> BaudRate -> BaudRate $c- :: BaudRate -> BaudRate -> BaudRate - :: BaudRate -> BaudRate -> BaudRate $c* :: BaudRate -> BaudRate -> BaudRate * :: BaudRate -> BaudRate -> BaudRate $cnegate :: BaudRate -> BaudRate negate :: BaudRate -> BaudRate $cabs :: BaudRate -> BaudRate abs :: BaudRate -> BaudRate $csignum :: BaudRate -> BaudRate signum :: BaudRate -> BaudRate $cfromInteger :: Integer -> BaudRate fromInteger :: Integer -> BaudRate Num)-- | Hang uppatternB0 ::BaudRate pattern$mB0 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB0 :: BaudRate B0 =BaudRate (0){-# LINE 600 "System/Posix/Terminal/Common.hsc" #-}-- | 50 baudpatternB50 ::BaudRate pattern$mB50 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB50 :: BaudRate B50 =BaudRate (1){-# LINE 603 "System/Posix/Terminal/Common.hsc" #-}-- | 75 baudpatternB75 ::BaudRate pattern$mB75 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB75 :: BaudRate B75 =BaudRate (2){-# LINE 606 "System/Posix/Terminal/Common.hsc" #-}-- | 110 baudpatternB110 ::BaudRate pattern$mB110 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB110 :: BaudRate B110 =BaudRate (3){-# LINE 609 "System/Posix/Terminal/Common.hsc" #-}-- | 134.5 baudpatternB134 ::BaudRate pattern$mB134 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB134 :: BaudRate B134 =BaudRate (4){-# LINE 612 "System/Posix/Terminal/Common.hsc" #-}-- | 150 baudpatternB150 ::BaudRate pattern$mB150 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB150 :: BaudRate B150 =BaudRate (5){-# LINE 615 "System/Posix/Terminal/Common.hsc" #-}-- | 200 baudpatternB200 ::BaudRate pattern$mB200 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB200 :: BaudRate B200 =BaudRate (6){-# LINE 618 "System/Posix/Terminal/Common.hsc" #-}-- | 300 baudpatternB300 ::BaudRate pattern$mB300 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB300 :: BaudRate B300 =BaudRate (7){-# LINE 621 "System/Posix/Terminal/Common.hsc" #-}-- | 600 baudpatternB600 ::BaudRate pattern$mB600 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB600 :: BaudRate B600 =BaudRate (8){-# LINE 624 "System/Posix/Terminal/Common.hsc" #-}-- | 1200 baudpatternB1200 ::BaudRate pattern$mB1200 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB1200 :: BaudRate B1200 =BaudRate (9){-# LINE 627 "System/Posix/Terminal/Common.hsc" #-}-- | 1800 baudpatternB1800 ::BaudRate pattern$mB1800 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB1800 :: BaudRate B1800 =BaudRate (10){-# LINE 630 "System/Posix/Terminal/Common.hsc" #-}-- | 2400 baudpatternB2400 ::BaudRate pattern$mB2400 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB2400 :: BaudRate B2400 =BaudRate (11){-# LINE 633 "System/Posix/Terminal/Common.hsc" #-}-- | 4800 baudpatternB4800 ::BaudRate pattern$mB4800 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB4800 :: BaudRate B4800 =BaudRate (12){-# LINE 636 "System/Posix/Terminal/Common.hsc" #-}-- | 9600 baudpatternB9600 ::BaudRate pattern$mB9600 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB9600 :: BaudRate B9600 =BaudRate (13){-# LINE 639 "System/Posix/Terminal/Common.hsc" #-}-- | 19200 baudpatternB19200 ::BaudRate pattern$mB19200 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB19200 :: BaudRate B19200 =BaudRate (14){-# LINE 642 "System/Posix/Terminal/Common.hsc" #-}-- | 38400 baudpatternB38400 ::BaudRate pattern$mB38400 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB38400 :: BaudRate B38400 =BaudRate (15){-# LINE 645 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 651 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 656 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 661 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 662 "System/Posix/Terminal/Common.hsc" #-}-- | 57600 baud, non-POSIX system-dependent extensionpatternB57600 ::BaudRate pattern$mB57600 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB57600 :: BaudRate B57600 =BaudRate (4097){-# LINE 665 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 666 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 671 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 672 "System/Posix/Terminal/Common.hsc" #-}-- | 115200 baud, non-POSIX system-dependent extensionpatternB115200 ::BaudRate pattern$mB115200 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB115200 :: BaudRate B115200 =BaudRate (4098){-# LINE 675 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 676 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 677 "System/Posix/Terminal/Common.hsc" #-}-- | 230400 baud, non-POSIX system-dependent extensionpatternB230400 ::BaudRate pattern$mB230400 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB230400 :: BaudRate B230400 =BaudRate (4099){-# LINE 680 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 681 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 682 "System/Posix/Terminal/Common.hsc" #-}-- | 460800 baud, non-POSIX system-dependent extensionpatternB460800 ::BaudRate pattern$mB460800 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB460800 :: BaudRate B460800 =BaudRate (4100){-# LINE 685 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 686 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 687 "System/Posix/Terminal/Common.hsc" #-}-- | 500000 baud, non-POSIX system-dependent extensionpatternB500000 ::BaudRate pattern$mB500000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB500000 :: BaudRate B500000 =BaudRate (4101){-# LINE 690 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 691 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 692 "System/Posix/Terminal/Common.hsc" #-}-- | 576000 baud, non-POSIX system-dependent extensionpatternB576000 ::BaudRate pattern$mB576000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB576000 :: BaudRate B576000 =BaudRate (4102){-# LINE 695 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 696 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 697 "System/Posix/Terminal/Common.hsc" #-}-- | 921600 baud, non-POSIX system-dependent extensionpatternB921600 ::BaudRate pattern$mB921600 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB921600 :: BaudRate B921600 =BaudRate (4103){-# LINE 700 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 701 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 702 "System/Posix/Terminal/Common.hsc" #-}-- | 1000000 baud, non-POSIX system-dependent extensionpatternB1000000 ::BaudRate pattern$mB1000000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB1000000 :: BaudRate B1000000 =BaudRate (4104){-# LINE 705 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 706 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 707 "System/Posix/Terminal/Common.hsc" #-}-- | 1152000 baud, non-POSIX system-dependent extensionpatternB1152000 ::BaudRate pattern$mB1152000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB1152000 :: BaudRate B1152000 =BaudRate (4105){-# LINE 710 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 711 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 712 "System/Posix/Terminal/Common.hsc" #-}-- | 1500000 baud, non-POSIX system-dependent extensionpatternB1500000 ::BaudRate pattern$mB1500000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB1500000 :: BaudRate B1500000 =BaudRate (4106){-# LINE 715 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 716 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 717 "System/Posix/Terminal/Common.hsc" #-}-- | 2000000 baud, non-POSIX system-dependent extensionpatternB2000000 ::BaudRate pattern$mB2000000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB2000000 :: BaudRate B2000000 =BaudRate (4107){-# LINE 720 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 721 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 722 "System/Posix/Terminal/Common.hsc" #-}-- | 2500000 baud, non-POSIX system-dependent extensionpatternB2500000 ::BaudRate pattern$mB2500000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB2500000 :: BaudRate B2500000 =BaudRate (4108){-# LINE 725 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 726 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 727 "System/Posix/Terminal/Common.hsc" #-}-- | 3000000 baud, non-POSIX system-dependent extensionpatternB3000000 ::BaudRate pattern$mB3000000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB3000000 :: BaudRate B3000000 =BaudRate (4109){-# LINE 730 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 731 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 732 "System/Posix/Terminal/Common.hsc" #-}-- | 3500000 baud, non-POSIX system-dependent extensionpatternB3500000 ::BaudRate pattern$mB3500000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB3500000 :: BaudRate B3500000 =BaudRate (4110){-# LINE 735 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 736 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 737 "System/Posix/Terminal/Common.hsc" #-}-- | 4000000 baud, non-POSIX system-dependent extensionpatternB4000000 ::BaudRate pattern$mB4000000 :: forall {r}. BaudRate -> ((# #) -> r) -> ((# #) -> r) -> r $bB4000000 :: BaudRate B4000000 =BaudRate (4111){-# LINE 740 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 741 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 743 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 772 "System/Posix/Terminal/Common.hsc" #-}inputSpeed ::TerminalAttributes ->BaudRate inputSpeed :: TerminalAttributes -> BaudRate inputSpeed TerminalAttributes termios =IO BaudRate -> BaudRate forall a. IO a -> a unsafePerformIO(IO BaudRate -> BaudRate) -> IO BaudRate -> BaudRate forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO BaudRate) -> IO BaudRate forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO BaudRate) -> IO BaudRate) -> (Ptr CTermios -> IO BaudRate) -> IO BaudRate forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCSpeed w <-Ptr CTermios -> IO CSpeed c_cfgetispeed Ptr CTermios p BaudRate -> IO BaudRate forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return(CSpeed -> BaudRate BaudRate CSpeed w )foreignimportcapiunsafe"termios.h cfgetispeed"c_cfgetispeed ::PtrCTermios->IOCSpeedwithInputSpeed ::TerminalAttributes ->BaudRate ->TerminalAttributes withInputSpeed :: TerminalAttributes -> BaudRate -> TerminalAttributes withInputSpeed TerminalAttributes termios (BaudRate CSpeed br )=IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO CInt) -> IO TerminalAttributes forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO TerminalAttributes withNewTermios TerminalAttributes termios ((Ptr CTermios -> IO CInt) -> IO TerminalAttributes) -> (Ptr CTermios -> IO CInt) -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->Ptr CTermios -> CSpeed -> IO CInt c_cfsetispeed Ptr CTermios p CSpeed br foreignimportcapiunsafe"termios.h cfsetispeed"c_cfsetispeed ::PtrCTermios->CSpeed->IOCIntoutputSpeed ::TerminalAttributes ->BaudRate outputSpeed :: TerminalAttributes -> BaudRate outputSpeed TerminalAttributes termios =IO BaudRate -> BaudRate forall a. IO a -> a unsafePerformIO(IO BaudRate -> BaudRate) -> IO BaudRate -> BaudRate forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO BaudRate) -> IO BaudRate forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO BaudRate) -> IO BaudRate) -> (Ptr CTermios -> IO BaudRate) -> IO BaudRate forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCSpeed w <-Ptr CTermios -> IO CSpeed c_cfgetospeed Ptr CTermios p BaudRate -> IO BaudRate forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return(CSpeed -> BaudRate BaudRate CSpeed w )foreignimportcapiunsafe"termios.h cfgetospeed"c_cfgetospeed ::PtrCTermios->IOCSpeedwithOutputSpeed ::TerminalAttributes ->BaudRate ->TerminalAttributes withOutputSpeed :: TerminalAttributes -> BaudRate -> TerminalAttributes withOutputSpeed TerminalAttributes termios (BaudRate CSpeed br )=IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doTerminalAttributes -> (Ptr CTermios -> IO CInt) -> IO TerminalAttributes forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO TerminalAttributes withNewTermios TerminalAttributes termios ((Ptr CTermios -> IO CInt) -> IO TerminalAttributes) -> (Ptr CTermios -> IO CInt) -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->Ptr CTermios -> CSpeed -> IO CInt c_cfsetospeed Ptr CTermios p CSpeed br foreignimportcapiunsafe"termios.h cfsetospeed"c_cfsetospeed ::PtrCTermios->CSpeed->IOCInt-- | @getTerminalAttributes fd@ calls @tcgetattr@ to obtain-- the @TerminalAttributes@ associated with @Fd@ @fd@.getTerminalAttributes ::Fd->IOTerminalAttributes getTerminalAttributes :: Fd -> IO TerminalAttributes getTerminalAttributes (FdCInt fd )=doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 811 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p->throwErrnoIfMinus1_"getTerminalAttributes"(c_tcgetattrfdp)TerminalAttributes -> IO TerminalAttributes forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return(TerminalAttributes -> IO TerminalAttributes) -> TerminalAttributes -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $ForeignPtr CTermios -> TerminalAttributes makeTerminalAttributes ForeignPtr CTermios fp foreignimportcapiunsafe"termios.h tcgetattr"c_tcgetattr ::CInt->PtrCTermios->IOCInt{-# LINE 819 "System/Posix/Terminal/Common.hsc" #-}dataTerminalState =Immediately |WhenDrained |WhenFlushed {-# LINE 846 "System/Posix/Terminal/Common.hsc" #-}-- | @setTerminalAttributes fd attr ts@ calls @tcsetattr@ to change-- the @TerminalAttributes@ associated with @Fd@ @fd@ to-- @attr@, when the terminal is in the state indicated by @ts@.setTerminalAttributes ::Fd->TerminalAttributes ->TerminalState ->IO()setTerminalAttributes :: Fd -> TerminalAttributes -> TerminalState -> IO () setTerminalAttributes (FdCInt fd )TerminalAttributes termios TerminalState state =doTerminalAttributes -> (Ptr CTermios -> IO ()) -> IO () forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO ()) -> IO ()) -> (Ptr CTermios -> IO ()) -> IO () forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->[Char] -> IO CInt -> IO () forall a. (Eq a, Num a) => [Char] -> IO a -> IO () throwErrnoIfMinus1_[Char] "setTerminalAttributes"(CInt -> CInt -> Ptr CTermios -> IO CInt c_tcsetattr CInt fd (TerminalState -> CInt state2Int TerminalState state )Ptr CTermios p )wherestate2Int ::TerminalState ->CIntstate2Int :: TerminalState -> CInt state2Int TerminalState Immediately =(CInt 0){-# LINE 861 "System/Posix/Terminal/Common.hsc" #-}state2IntWhenDrained=(1){-# LINE 862 "System/Posix/Terminal/Common.hsc" #-}state2IntWhenFlushed=(2){-# LINE 863 "System/Posix/Terminal/Common.hsc" #-}foreignimportcapiunsafe"termios.h tcsetattr"c_tcsetattr ::CInt->CInt->PtrCTermios->IOCInt-- | @sendBreak fd duration@ calls @tcsendbreak@ to transmit a-- continuous stream of zero-valued bits on @Fd@ @fd@ for the-- specified implementation-dependent @duration@.sendBreak ::Fd->Int->IO()sendBreak :: Fd -> Int -> IO () sendBreak (FdCInt fd )Int duration =[Char] -> IO CInt -> IO () forall a. (Eq a, Num a) => [Char] -> IO a -> IO () throwErrnoIfMinus1_[Char] "sendBreak"(CInt -> CInt -> IO CInt c_tcsendbreak CInt fd (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegralInt duration ))foreignimportcapiunsafe"termios.h tcsendbreak"c_tcsendbreak ::CInt->CInt->IOCInt-- | @drainOutput fd@ calls @tcdrain@ to block until all output-- written to @Fd@ @fd@ has been transmitted.---- Throws 'IOError' (\"unsupported operation\") if platform does not-- provide @tcdrain(3)@ (use @#if HAVE_TCDRAIN@ CPP guard to-- detect availability).drainOutput ::Fd->IO(){-# LINE 885 "System/Posix/Terminal/Common.hsc" #-}drainOutput(Fdfd)=throwErrnoIfMinus1_"drainOutput"(c_tcdrainfd)foreignimportcapisafe"termios.h tcdrain"c_tcdrain ::CInt->IOCInt{-# LINE 894 "System/Posix/Terminal/Common.hsc" #-}{-# LINE 896 "System/Posix/Terminal/Common.hsc" #-}dataQueueSelector =InputQueue -- TCIFLUSH|OutputQueue -- TCOFLUSH|BothQueues -- TCIOFLUSH{-# LINE 910 "System/Posix/Terminal/Common.hsc" #-}-- | @discardData fd queues@ calls @tcflush@ to discard-- pending input and\/or output for @Fd@ @fd@,-- as indicated by the @QueueSelector@ @queues@.discardData ::Fd->QueueSelector ->IO()discardData :: Fd -> QueueSelector -> IO () discardData (FdCInt fd )QueueSelector queue =[Char] -> IO CInt -> IO () forall a. (Eq a, Num a) => [Char] -> IO a -> IO () throwErrnoIfMinus1_[Char] "discardData"(CInt -> CInt -> IO CInt c_tcflush CInt fd (QueueSelector -> CInt queue2Int QueueSelector queue ))wherequeue2Int ::QueueSelector ->CIntqueue2Int :: QueueSelector -> CInt queue2Int QueueSelector InputQueue =(CInt 0){-# LINE 920 "System/Posix/Terminal/Common.hsc" #-}queue2IntOutputQueue=(1){-# LINE 921 "System/Posix/Terminal/Common.hsc" #-}queue2IntBothQueues=(2){-# LINE 922 "System/Posix/Terminal/Common.hsc" #-}foreignimportcapiunsafe"termios.h tcflush"c_tcflush ::CInt->CInt->IOCInt{-# LINE 927 "System/Posix/Terminal/Common.hsc" #-}dataFlowAction =SuspendOutput -- ^ TCOOFF|RestartOutput -- ^ TCOON|TransmitStop -- ^ TCIOFF|TransmitStart -- ^ TCION{-# LINE 952 "System/Posix/Terminal/Common.hsc" #-}-- | @controlFlow fd action@ calls @tcflow@ to control the-- flow of data on @Fd@ @fd@, as indicated by-- @action@.controlFlow ::Fd->FlowAction ->IO()controlFlow :: Fd -> FlowAction -> IO () controlFlow (FdCInt fd )FlowAction action =[Char] -> IO CInt -> IO () forall a. (Eq a, Num a) => [Char] -> IO a -> IO () throwErrnoIfMinus1_[Char] "controlFlow"(CInt -> CInt -> IO CInt c_tcflow CInt fd (FlowAction -> CInt action2Int FlowAction action ))whereaction2Int ::FlowAction ->CIntaction2Int :: FlowAction -> CInt action2Int FlowAction SuspendOutput =(CInt 0){-# LINE 962 "System/Posix/Terminal/Common.hsc" #-}action2IntRestartOutput=(1){-# LINE 963 "System/Posix/Terminal/Common.hsc" #-}action2IntTransmitStop=(2){-# LINE 964 "System/Posix/Terminal/Common.hsc" #-}action2IntTransmitStart=(3){-# LINE 965 "System/Posix/Terminal/Common.hsc" #-}foreignimportcapiunsafe"termios.h tcflow"c_tcflow ::CInt->CInt->IOCInt-- | @getTerminalProcessGroupID fd@ calls @tcgetpgrp@ to-- obtain the @ProcessGroupID@ of the foreground process group-- associated with the terminal attached to @Fd@ @fd@.getTerminalProcessGroupID ::Fd->IOProcessGroupIDgetTerminalProcessGroupID :: Fd -> IO ProcessGroupID getTerminalProcessGroupID (FdCInt fd )=do[Char] -> IO ProcessGroupID -> IO ProcessGroupID forall a. (Eq a, Num a) => [Char] -> IO a -> IO a throwErrnoIfMinus1[Char] "getTerminalProcessGroupID"(CInt -> IO ProcessGroupID c_tcgetpgrp CInt fd )foreignimportccallunsafe"tcgetpgrp"c_tcgetpgrp ::CInt->IOCPid-- | @setTerminalProcessGroupID fd pgid@ calls @tcsetpgrp@ to-- set the @ProcessGroupID@ of the foreground process group-- associated with the terminal attached to @Fd@-- @fd@ to @pgid@.setTerminalProcessGroupID ::Fd->ProcessGroupID->IO()setTerminalProcessGroupID :: Fd -> ProcessGroupID -> IO () setTerminalProcessGroupID (FdCInt fd )ProcessGroupID pgid =[Char] -> IO CInt -> IO () forall a. (Eq a, Num a) => [Char] -> IO a -> IO () throwErrnoIfMinus1_[Char] "setTerminalProcessGroupID"(CInt -> ProcessGroupID -> IO CInt c_tcsetpgrp CInt fd ProcessGroupID pgid )foreignimportccallunsafe"tcsetpgrp"c_tcsetpgrp ::CInt->CPid->IOCInt{-# LINE 991 "System/Posix/Terminal/Common.hsc" #-}-- ------------------------------------------------------------------------------- file descriptor queries-- | @queryTerminal fd@ calls @isatty@ to determine whether or-- not @Fd@ @fd@ is associated with a terminal.queryTerminal ::Fd->IOBoolqueryTerminal :: Fd -> IO Bool queryTerminal (FdCInt fd )=doCInt r <-CInt -> IO CInt c_isatty CInt fd Bool -> IO Bool forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return(CInt r CInt -> CInt -> Bool forall a. Eq a => a -> a -> Bool ==CInt 1)-- ToDo: the spec says that it can set errno to EBADF if the result is zeroforeignimportccallunsafe"isatty"c_isatty ::CInt->IOCInt-- ------------------------------------------------------------------------------- Local utility functions-- Convert Haskell ControlCharacter to Int{-# LINE 1012 "System/Posix/Terminal/Common.hsc" #-}cc2Word ::ControlCharacter ->Intcc2Word :: ControlCharacter -> Int cc2Word ControlCharacter EndOfFile =(Int 4){-# LINE 1015 "System/Posix/Terminal/Common.hsc" #-}cc2WordEndOfLine=(11){-# LINE 1016 "System/Posix/Terminal/Common.hsc" #-}cc2WordErase=(2){-# LINE 1017 "System/Posix/Terminal/Common.hsc" #-}cc2WordInterrupt=(0){-# LINE 1018 "System/Posix/Terminal/Common.hsc" #-}cc2WordKill=(3){-# LINE 1019 "System/Posix/Terminal/Common.hsc" #-}cc2WordQuit=(1){-# LINE 1020 "System/Posix/Terminal/Common.hsc" #-}cc2WordSuspend=(10){-# LINE 1021 "System/Posix/Terminal/Common.hsc" #-}cc2WordStart=(8){-# LINE 1022 "System/Posix/Terminal/Common.hsc" #-}cc2WordStop=(9){-# LINE 1023 "System/Posix/Terminal/Common.hsc" #-}-- Clear termios i_flagclearInputFlag ::CTcflag->TerminalAttributes ->TerminalAttributes clearInputFlag :: CTcflag -> TerminalAttributes -> TerminalAttributes clearInputFlag CTcflag flag TerminalAttributes termios =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1029 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1032 "System/Posix/Terminal/Common.hsc" #-}iflag<-((\hsc_ptr->peekByteOffhsc_ptr0))p2{-# LINE 1033 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr0))p1(iflag.&.complementflag){-# LINE 1034 "System/Posix/Terminal/Common.hsc" #-}return$makeTerminalAttributesfp-- Set termios i_flagsetInputFlag ::CTcflag->TerminalAttributes ->TerminalAttributes setInputFlag :: CTcflag -> TerminalAttributes -> TerminalAttributes setInputFlag CTcflag flag TerminalAttributes termios =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1041 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1044 "System/Posix/Terminal/Common.hsc" #-}iflag<-((\hsc_ptr->peekByteOffhsc_ptr0))p2{-# LINE 1045 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr0))p1(iflag.|.flag){-# LINE 1046 "System/Posix/Terminal/Common.hsc" #-}return$makeTerminalAttributesfp-- Examine termios i_flagtestInputFlag ::CTcflag->TerminalAttributes ->BooltestInputFlag :: CTcflag -> TerminalAttributes -> Bool testInputFlag CTcflag flag TerminalAttributes termios =IO Bool -> Bool forall a. IO a -> a unsafePerformIO(IO Bool -> Bool) -> IO Bool -> Bool forall a b. (a -> b) -> a -> b $TerminalAttributes -> (Ptr CTermios -> IO Bool) -> IO Bool forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO Bool) -> IO Bool) -> (Ptr CTermios -> IO Bool) -> IO Bool forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCTcflag iflag <-((\Ptr CTermios hsc_ptr ->Ptr CTermios -> Int -> IO CTcflag forall b. Ptr b -> Int -> IO CTcflag forall a b. Storable a => Ptr b -> Int -> IO a peekByteOffPtr CTermios hsc_ptr Int 0))Ptr CTermios p {-# LINE 1054 "System/Posix/Terminal/Common.hsc" #-}return$!((iflag.&.flag)/=0)-- Clear termios c_flagclearControlFlag ::CTcflag->TerminalAttributes ->TerminalAttributes clearControlFlag :: CTcflag -> TerminalAttributes -> TerminalAttributes clearControlFlag CTcflag flag TerminalAttributes termios =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1061 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1064 "System/Posix/Terminal/Common.hsc" #-}cflag<-((\hsc_ptr->peekByteOffhsc_ptr8))p2{-# LINE 1065 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr8))p1(cflag.&.complementflag){-# LINE 1066 "System/Posix/Terminal/Common.hsc" #-}return$makeTerminalAttributesfp-- Set termios c_flagsetControlFlag ::CTcflag->TerminalAttributes ->TerminalAttributes setControlFlag :: CTcflag -> TerminalAttributes -> TerminalAttributes setControlFlag CTcflag flag TerminalAttributes termios =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1073 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1076 "System/Posix/Terminal/Common.hsc" #-}cflag<-((\hsc_ptr->peekByteOffhsc_ptr8))p2{-# LINE 1077 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr8))p1(cflag.|.flag){-# LINE 1078 "System/Posix/Terminal/Common.hsc" #-}return$makeTerminalAttributesfp-- Examine termios c_flagtestControlFlag ::CTcflag->TerminalAttributes ->BooltestControlFlag :: CTcflag -> TerminalAttributes -> Bool testControlFlag CTcflag flag TerminalAttributes termios =IO Bool -> Bool forall a. IO a -> a unsafePerformIO(IO Bool -> Bool) -> IO Bool -> Bool forall a b. (a -> b) -> a -> b $TerminalAttributes -> (Ptr CTermios -> IO Bool) -> IO Bool forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO Bool) -> IO Bool) -> (Ptr CTermios -> IO Bool) -> IO Bool forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCTcflag cflag <-((\Ptr CTermios hsc_ptr ->Ptr CTermios -> Int -> IO CTcflag forall b. Ptr b -> Int -> IO CTcflag forall a b. Storable a => Ptr b -> Int -> IO a peekByteOffPtr CTermios hsc_ptr Int 8))Ptr CTermios p {-# LINE 1086 "System/Posix/Terminal/Common.hsc" #-}return$!((cflag.&.flag)/=0)-- Clear termios l_flagclearLocalFlag ::CTcflag->TerminalAttributes ->TerminalAttributes clearLocalFlag :: CTcflag -> TerminalAttributes -> TerminalAttributes clearLocalFlag CTcflag flag TerminalAttributes termios =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1093 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1096 "System/Posix/Terminal/Common.hsc" #-}lflag<-((\hsc_ptr->peekByteOffhsc_ptr12))p2{-# LINE 1097 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr12))p1(lflag.&.complementflag){-# LINE 1098 "System/Posix/Terminal/Common.hsc" #-}return$makeTerminalAttributesfp-- Set termios l_flagsetLocalFlag ::CTcflag->TerminalAttributes ->TerminalAttributes setLocalFlag :: CTcflag -> TerminalAttributes -> TerminalAttributes setLocalFlag CTcflag flag TerminalAttributes termios =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1105 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1108 "System/Posix/Terminal/Common.hsc" #-}lflag<-((\hsc_ptr->peekByteOffhsc_ptr12))p2{-# LINE 1109 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr12))p1(lflag.|.flag){-# LINE 1110 "System/Posix/Terminal/Common.hsc" #-}return$makeTerminalAttributesfp-- Examine termios l_flagtestLocalFlag ::CTcflag->TerminalAttributes ->BooltestLocalFlag :: CTcflag -> TerminalAttributes -> Bool testLocalFlag CTcflag flag TerminalAttributes termios =IO Bool -> Bool forall a. IO a -> a unsafePerformIO(IO Bool -> Bool) -> IO Bool -> Bool forall a b. (a -> b) -> a -> b $TerminalAttributes -> (Ptr CTermios -> IO Bool) -> IO Bool forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO Bool) -> IO Bool) -> (Ptr CTermios -> IO Bool) -> IO Bool forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCTcflag lflag <-((\Ptr CTermios hsc_ptr ->Ptr CTermios -> Int -> IO CTcflag forall b. Ptr b -> Int -> IO CTcflag forall a b. Storable a => Ptr b -> Int -> IO a peekByteOffPtr CTermios hsc_ptr Int 12))Ptr CTermios p {-# LINE 1118 "System/Posix/Terminal/Common.hsc" #-}return$!((lflag.&.flag)/=0)-- Clear termios o_flagclearOutputFlag ::CTcflag->TerminalAttributes ->TerminalAttributes clearOutputFlag :: CTcflag -> TerminalAttributes -> TerminalAttributes clearOutputFlag CTcflag flag TerminalAttributes termios =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1125 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1128 "System/Posix/Terminal/Common.hsc" #-}oflag<-((\hsc_ptr->peekByteOffhsc_ptr4))p2{-# LINE 1129 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr4))p1(oflag.&.complementflag){-# LINE 1130 "System/Posix/Terminal/Common.hsc" #-}return$makeTerminalAttributesfp-- Set termios o_flagsetOutputFlag ::CTcflag->TerminalAttributes ->TerminalAttributes setOutputFlag :: CTcflag -> TerminalAttributes -> TerminalAttributes setOutputFlag CTcflag flag TerminalAttributes termios =IO TerminalAttributes -> TerminalAttributes forall a. IO a -> a unsafePerformIO(IO TerminalAttributes -> TerminalAttributes) -> IO TerminalAttributes -> TerminalAttributes forall a b. (a -> b) -> a -> b $doForeignPtr CTermios fp <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1137 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1140 "System/Posix/Terminal/Common.hsc" #-}oflag<-((\hsc_ptr->peekByteOffhsc_ptr4))p2{-# LINE 1141 "System/Posix/Terminal/Common.hsc" #-}((\hsc_ptr->pokeByteOffhsc_ptr4))p1(oflag.|.flag){-# LINE 1142 "System/Posix/Terminal/Common.hsc" #-}return$makeTerminalAttributesfp-- Examine termios o_flagtestOutputFlag ::CTcflag->TerminalAttributes ->BooltestOutputFlag :: CTcflag -> TerminalAttributes -> Bool testOutputFlag CTcflag flag TerminalAttributes termios =IO Bool -> Bool forall a. IO a -> a unsafePerformIO(IO Bool -> Bool) -> IO Bool -> Bool forall a b. (a -> b) -> a -> b $TerminalAttributes -> (Ptr CTermios -> IO Bool) -> IO Bool forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO a withTerminalAttributes TerminalAttributes termios ((Ptr CTermios -> IO Bool) -> IO Bool) -> (Ptr CTermios -> IO Bool) -> IO Bool forall a b. (a -> b) -> a -> b $\Ptr CTermios p ->doCTcflag oflag <-((\Ptr CTermios hsc_ptr ->Ptr CTermios -> Int -> IO CTcflag forall b. Ptr b -> Int -> IO CTcflag forall a b. Storable a => Ptr b -> Int -> IO a peekByteOffPtr CTermios hsc_ptr Int 4))Ptr CTermios p {-# LINE 1150 "System/Posix/Terminal/Common.hsc" #-}return$!((oflag.&.flag)/=0)withNewTermios ::TerminalAttributes ->(PtrCTermios->IOa )->IOTerminalAttributes withNewTermios :: forall a. TerminalAttributes -> (Ptr CTermios -> IO a) -> IO TerminalAttributes withNewTermios TerminalAttributes termios Ptr CTermios -> IO a action =doForeignPtr CTermios fp1 <-Int -> IO (ForeignPtr CTermios) forall a. Int -> IO (ForeignPtr a) mallocForeignPtrBytes(Int 60){-# LINE 1156 "System/Posix/Terminal/Common.hsc" #-}withForeignPtrfp1$\p1->dowithTerminalAttributestermios$\p2->docopyBytesp1p2(60){-# LINE 1159 "System/Posix/Terminal/Common.hsc" #-}_<-actionp1return()TerminalAttributes -> IO TerminalAttributes forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return(TerminalAttributes -> IO TerminalAttributes) -> TerminalAttributes -> IO TerminalAttributes forall a b. (a -> b) -> a -> b $ForeignPtr CTermios -> TerminalAttributes makeTerminalAttributes ForeignPtr CTermios fp1 {-# LINE 1164 "System/Posix/Terminal/Common.hsc" #-}