#4046: Add System.IO.hGetBufSome
---------------------------------+------------------------------------------
Reporter: simonmar | Owner:
Type: proposal | Status: new
Priority: normal | Milestone: 6.14.1
Component: libraries/base | Version: 6.12.2
Keywords: | Difficulty:
Os: Unknown/Multiple | Testcase:
Architecture: Unknown/Multiple | Failure: None/Unknown
---------------------------------+------------------------------------------
I'd like to add the following function to `System.IO`, alongside `hGetBuf`
and `hGetBufNonBlocking`:
{{{
-- | 'hGetBufSome' @hdl buf count@ reads data from the handle @hdl@
-- into the buffer @b...@. If there is any data available to read,
-- then 'hGetBufSome' returns it immediately; it only blocks if there
-- is no data to be read.
--
-- It returns the number of bytes actually read. This may be zero if
-- EOF was reached before any data was read (or if @count@ is zero).
--
-- 'hGetBufSome' never raises an EOF exception, instead it returns a value
-- smaller than @co...@.
--
-- If the handle is a pipe or socket, and the writing end
-- is closed, 'hGetBufSome' will behave as if EOF was reached.
--
-- 'hGetBufSome' ignores the prevailing 'TextEncoding' and 'NewlineMode'
-- on the 'Handle', and reads bytes directly.
}}}
We need it to properly fix #4041 and #3808. It corresponds more closely
to the semantics of Unix `read()`, and I've found this to be the most
useful low-level API for reading in practice.
In the long term we'd like to provide a better binary I/O API, and we
might even get around to doing that before 6.14.1, but if not we'll need
this.
Deadline: 2 weeks.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4046>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs