#ifndef ISTREAM_CHAIN_H #define ISTREAM_CHAIN_H struct istream_chain; /* Flexibly couple input streams into a single chain stream. Input streams can be added after creation of the chain stream, and the chain stream will not signal EOF until all streams are read to EOF and the last stream added was NULL. Streams that were finished to EOF are unreferenced. The chain stream is obviously not seekable and it has no determinable size. The chain_r argument returns a pointer to the chain object. */ struct istream *i_stream_create_chain(struct istream_chain **chain_r, size_t max_buffer_size); /* Append an input stream to the chain. */ void i_stream_chain_append(struct istream_chain *chain, struct istream *stream); /* Mark the end of the chain. Only then reads from the chain stream can return EOF. */ void i_stream_chain_append_eof(struct istream_chain *chain); #endif