return !stream->eof || _stream->skip != _stream->pos;
}
+bool i_stream_is_eof(struct istream *stream)
+{
+ const struct istream_private *_stream = stream->real_stream;
+
+ if (_stream->skip == _stream->pos)
+ (void)i_stream_read(stream);
+ return !i_stream_have_bytes_left(stream);
+}
+
static char *i_stream_next_line_finish(struct istream_private *stream, size_t i)
{
char *ret;
int i_stream_get_size(struct istream *stream, bool exact, uoff_t *size_r);
/* Returns TRUE if there are any bytes left to be read or in buffer. */
bool i_stream_have_bytes_left(const struct istream *stream) ATTR_PURE;
+/* Returns TRUE if there are no bytes buffered and read() returns EOF. */
+bool i_stream_is_eof(struct istream *stream);
/* Gets the next line from stream and returns it, or NULL if more data is
needed to make a full line. i_stream_set_return_partial_line() specifies