Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5086:68076557b05d HEAD
cleanup
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 26 Jan 2007 02:42:29 +0200 |
parents | dd4c4a0c0aae |
children | 37e3fac0aa2f |
files | src/lib/istream-seekable.c |
diffstat | 1 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/istream-seekable.c Fri Jan 26 02:31:36 2007 +0200 +++ b/src/lib/istream-seekable.c Fri Jan 26 02:42:29 2007 +0200 @@ -269,6 +269,8 @@ ssize_t ret; if (sstream->buffer != NULL) { + /* we want to know the full size of the file, so read until + we're finished */ old_offset = stream->istream.v_offset; do { i_stream_skip(&stream->istream, stream->skip); @@ -281,11 +283,16 @@ i_stream_seek(&stream->istream, old_offset); } - if (sstream->fd_input != NULL) + if (sstream->fd_input != NULL) { + /* using a file backed buffer, we can use real fstat() */ return i_stream_stat(sstream->fd_input, exact); + } else { + /* buffer is completely in memory */ + i_assert(sstream->buffer != NULL); - stream->statbuf.st_size = sstream->buffer->used; - return &stream->statbuf; + stream->statbuf.st_size = sstream->buffer->used; + return &stream->statbuf; + } } struct istream *