changeset 7925:4a166ccec256 HEAD

Added i_stream_add_data().
author Timo Sirainen <tss@iki.fi>
date Sat, 21 Jun 2008 12:21:18 +0300
parents 30871a9961f7
children 187183c360dd
files src/lib/istream.c src/lib/istream.h
diffstat 2 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/istream.c	Sat Jun 21 11:25:54 2008 +0300
+++ b/src/lib/istream.c	Sat Jun 21 12:21:18 2008 +0300
@@ -347,6 +347,21 @@
 	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)
--- a/src/lib/istream.h	Sat Jun 21 11:25:54 2008 +0300
+++ b/src/lib/istream.h	Sat Jun 21 12:21:18 2008 +0300
@@ -105,4 +105,9 @@
 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