Proposal: add System.IO.hGetBufSome

Thomas Schilling nominolo at googlemail.com
Thu May 6 08:33:54 EDT 2010


+1 from me as well

On 5 May 2010 11:18, Simon Marlow <marlowsd at gmail.com> wrote:
> http://hackage.haskell.org/trac/ghc/ticket/4046
>
> 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 @buf at .  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 @count at .
> --
> -- 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.
>
> Cheers,
>        Simon
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
>



-- 
Push the envelope.  Watch it bend.


More information about the Libraries mailing list