iteratee-0.8.9.5: Iteratee-based I/O

Safe Haskell | Safe-Inferred
Language | Haskell2010

Data.Iteratee.IO.Posix

Synopsis

- type FileOffset = COff
- myfdRead :: Fd -> Ptr CChar -> ByteCount -> IO (Either Errno ByteCount)
- myfdSeek :: Fd -> SeekMode -> FileOffset -> IO (Either Errno FileOffset)
- newtype Errno :: * = Errno CInt
- select'read'pending :: [Fd] -> IO (Either Errno [Fd])

# Documentation

type FileOffset = COff

myfdRead :: Fd -> Ptr CChar -> ByteCount -> IO (Either Errno ByteCount)

Alas, GHC provides no function to read from Fd to an allocated buffer. The library function fdRead is not appropriate as it returns a string already. I'd rather get data from a buffer. Furthermore, fdRead (at least in GHC) allocates a new buffer each time it is called. This is a waste. Yet another problem with fdRead is in raising an exception on any IOError or even EOF. I'd rather avoid exceptions altogether.

myfdSeek :: Fd -> SeekMode -> FileOffset -> IO (Either Errno FileOffset)

The following fseek procedure throws no exceptions.

newtype Errno :: *

Haskell representation for `errno` values. The implementation is deliberately exposed, to allow users to add their own definitions of `Errno` values.

Constructors

Errno CInt |

Instances

Eq Errno |

select'read'pending :: [Fd] -> IO (Either Errno [Fd])

poll if file descriptors have something to read Return the list of read-pending descriptors