From: Timo Sirainen Date: Sat, 21 Jun 2008 09:21:18 +0000 (+0300) Subject: Added i_stream_add_data(). X-Git-Tag: 1.2.alpha1~236 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=282a436a74d8835edb45cc019b1c916013013fd3;p=thirdparty%2Fdovecot%2Fcore.git Added i_stream_add_data(). --HG-- branch : HEAD --- diff --git a/src/lib/istream.c b/src/lib/istream.c index 7a0245dc57..0e861df79a 100644 --- a/src/lib/istream.c +++ b/src/lib/istream.c @@ -347,6 +347,21 @@ bool i_stream_get_buffer_space(struct istream_private *stream, return stream->pos != stream->buffer_size; } +bool i_stream_add_data(struct istream *_stream, const unsigned char *data, + size_t size) +{ + struct istream_private *stream = _stream->real_stream; + size_t size2; + + (void)i_stream_get_buffer_space(stream, size, &size2); + if (size > size2) + return FALSE; + + memcpy(stream->w_buffer + stream->pos, data, size); + stream->pos += size; + return TRUE; +} + static void i_stream_default_set_max_buffer_size(struct iostream_private *stream, size_t max_size) diff --git a/src/lib/istream.h b/src/lib/istream.h index 4834dccd67..5ac13bcfb7 100644 --- a/src/lib/istream.h +++ b/src/lib/istream.h @@ -105,4 +105,9 @@ unsigned char *i_stream_get_modifiable_data(const struct istream *stream, int i_stream_read_data(struct istream *stream, const unsigned char **data_r, size_t *size_r, size_t threshold); +/* Append external data to input stream. Returns TRUE if successful, FALSE if + there is not enough space in the stream. */ +bool i_stream_add_data(struct istream *stream, const unsigned char *data, + size_t size); + #endif