]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added i_stream_add_data().
authorTimo Sirainen <tss@iki.fi>
Sat, 21 Jun 2008 09:21:18 +0000 (12:21 +0300)
committerTimo Sirainen <tss@iki.fi>
Sat, 21 Jun 2008 09:21:18 +0000 (12:21 +0300)
--HG--
branch : HEAD

src/lib/istream.c
src/lib/istream.h

index 7a0245dc57a46a97c0086585cbcbd1d3248b88b9..0e861df79aaf376847550ba4f20215981fd0465d 100644 (file)
@@ -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)
index 4834dccd67564616b2c9e42dab4971ac8d785819..5ac13bcfb7b713a458f497cd87d7c440d4a0078c 100644 (file)
@@ -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