return test_istream_create_data(data, strlen(data));
}
+static struct test_istream *test_istream_find(struct istream *input)
+{
+ struct istream *in;
+
+ for (in = input; in != NULL; in = in->real_stream->parent) {
+ if (in->real_stream->read == test_read)
+ return (struct test_istream *)in->real_stream;
+ }
+ i_panic("%s isn't test-istream", i_stream_get_name(input));
+}
+
void test_istream_set_allow_eof(struct istream *input, bool allow)
{
- struct test_istream *tstream =
- (struct test_istream *)input->real_stream;
+ struct test_istream *tstream = test_istream_find(input);
tstream->allow_eof = allow;
}
void test_istream_set_max_buffer_size(struct istream *input, size_t size)
{
- struct test_istream *tstream =
- (struct test_istream *)input->real_stream;
+ struct test_istream *tstream = test_istream_find(input);
tstream->istream.max_buffer_size = size;
}
void test_istream_set_size(struct istream *input, uoff_t size)
{
- struct test_istream *tstream =
- (struct test_istream *)input->real_stream;
+ struct test_istream *tstream = test_istream_find(input);
if (size > (uoff_t)tstream->istream.statbuf.st_size)
size = (uoff_t)tstream->istream.statbuf.st_size;