static gboolean
stream_eos (CamelStream *stream)
{
	CamelSCALIXStream *scalix = (CamelSCALIXStream *) stream;
	
	if (scalix->eol)
		return TRUE;
	
	if (scalix->disconnected && scalix->inptr == scalix->inend)
		return TRUE;
	
	if (camel_stream_eos (scalix->stream))
		return TRUE;
	
	return FALSE;
}
static gboolean
stream_eos (CamelStream *stream)
{
	CamelIMAP4Stream *imap4 = (CamelIMAP4Stream *) stream;

	if (imap4->eol)
		return TRUE;

	if (imap4->disconnected && imap4->inptr == imap4->inend)
		return TRUE;

	if (camel_stream_eos (imap4->stream))
		return TRUE;

	return FALSE;
}
static gboolean
eos (CamelStream *stream)
{
	CamelSeekableSubstream *seekable_substream = CAMEL_SEEKABLE_SUBSTREAM(stream);
	CamelSeekableStream *seekable_stream = CAMEL_SEEKABLE_STREAM(stream);
	CamelSeekableStream *parent;
	gboolean eos;

	if (stream->eos)
		eos = TRUE;
	else {
		parent = seekable_substream->parent_stream;
		if (!parent_reset (seekable_substream, parent))
			return TRUE;

		eos = camel_stream_eos (CAMEL_STREAM (parent));
		if (!eos && (seekable_stream->bound_end != CAMEL_STREAM_UNBOUND)) {
			eos = seekable_stream->position >= seekable_stream->bound_end;
		}
	}

	return eos;
}