Mercurial > dovecot > core-2.2
diff src/lib/istream-limit.c @ 3241:b79853b4b005 HEAD
Replaced i_stream_get_size() with i_stream_stat(). Added i_stream_sync().
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 29 Mar 2005 13:28:06 +0300 |
parents | 904a268921af |
children | 61ea539ee5f1 |
line wrap: on
line diff
--- a/src/lib/istream-limit.c Tue Mar 29 01:35:12 2005 +0300 +++ b/src/lib/istream-limit.c Tue Mar 29 13:28:06 2005 +0300 @@ -89,12 +89,19 @@ stream->skip = stream->pos = 0; } -static uoff_t _get_size(struct _istream *stream) +static const struct stat *_stat(struct _istream *stream) { struct limit_istream *lstream = (struct limit_istream *) stream; + const struct stat *st; - return lstream->v_size != (uoff_t)-1 ? lstream->v_size : - i_stream_get_size(lstream->input); + st = i_stream_stat(lstream->input); + if (st == NULL) + return NULL; + + stream->statbuf = *st; + if (lstream->v_size != (uoff_t)-1) + stream->statbuf.st_size = lstream->v_size; + return &stream->statbuf; } struct istream *i_stream_create_limit(pool_t pool, struct istream *input, @@ -120,7 +127,7 @@ lstream->istream.read = _read; lstream->istream.seek = _seek; - lstream->istream.get_size = _get_size; + lstream->istream.stat = _stat; lstream->istream.istream.seekable = input->seekable; return _i_stream_create(&lstream->istream, pool, i_stream_get_fd(input),