changeset 21681:9ef9988619b7

lib: Added i_stream_create_sized_range() This is just a small wrapper to i_stream_create_sized() to specify stream's start offset.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 01 Nov 2016 14:47:05 +0200
parents f0a1e12fc57e
children 7945fd42b09f
files src/lib/istream-sized.c src/lib/istream-sized.h
diffstat 2 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/istream-sized.c	Wed Feb 22 20:05:16 2017 +0200
+++ b/src/lib/istream-sized.c	Tue Nov 01 14:47:05 2016 +0200
@@ -176,6 +176,18 @@
 	return &sstream->istream.istream;
 }
 
+struct istream *i_stream_create_sized_range(struct istream *input,
+					    uoff_t offset, uoff_t size)
+{
+	uoff_t orig_offset = input->v_offset;
+	struct istream *ret;
+
+	input->v_offset = offset;
+	ret = i_stream_create_sized(input, size);
+	input->v_offset = orig_offset;
+	return ret;
+}
+
 #undef i_stream_create_sized_with_callback
 struct istream *
 i_stream_create_sized_with_callback(struct istream *input, uoff_t size,
--- a/src/lib/istream-sized.h	Wed Feb 22 20:05:16 2017 +0200
+++ b/src/lib/istream-sized.h	Tue Nov 01 14:47:05 2016 +0200
@@ -19,6 +19,8 @@
 /* Assume that input is exactly the given size. If it's smaller, log an error
    and fail with EINVAL error. If it's larger, log an error but don't fail. */
 struct istream *i_stream_create_sized(struct istream *input, uoff_t size);
+struct istream *i_stream_create_sized_range(struct istream *input,
+					    uoff_t offset, uoff_t size);
 /* Same as i_stream_create_sized(), but set the error message via the
    callback. */
 struct istream *