view src/lib/istream-try.h @ 22607:708b4dda62dc

lib: Add istream-try This can be used to automatically detect the underlying istream format from a given list of choices.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Fri, 06 Oct 2017 18:31:12 +0300
parents
children
line wrap: on
line source

#ifndef ISTREAM_TRY_H
#define ISTREAM_TRY_H

/* Read from the first input stream that doesn't fail with EINVAL. If any of
   the streams fail with non-EINVAL, it's treated as a fatal failure and the
   error is immediately returned. If a stream returns 0, more data is waited
   for before continuing to the next stream. This allows the last stream to
   be a fallback stream that always succeeds.

   Once the stream is detected, all the other streams are unreferenced.
   The streams should usually be children of the same parent tee-istream. */
struct istream *istream_try_create(struct istream *const input[]);

#endif