From 043ee67696d8544db1dfb9698882c85afff8dc74 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 1 Nov 2016 14:47:05 +0200 Subject: [PATCH] lib: Added i_stream_create_sized_range() This is just a small wrapper to i_stream_create_sized() to specify stream's start offset. --- src/lib/istream-sized.c | 12 ++++++++++++ src/lib/istream-sized.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/lib/istream-sized.c b/src/lib/istream-sized.c index a60925b564..877a405d8a 100644 --- a/src/lib/istream-sized.c +++ b/src/lib/istream-sized.c @@ -176,6 +176,18 @@ struct istream *i_stream_create_sized(struct istream *input, uoff_t size) 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, diff --git a/src/lib/istream-sized.h b/src/lib/istream-sized.h index 61a78eb5d1..946353197e 100644 --- a/src/lib/istream-sized.h +++ b/src/lib/istream-sized.h @@ -19,6 +19,8 @@ istream_sized_callback_t(const struct istream_sized_error_data *data, /* 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 * -- 2.47.3