istream-seekable.c revision 64ae2f0ba5b94092f9edd439905c3272719c23c3
76b43e4417bab52e913da39b5f5bc2a130d3f149Timo Sirainen/* Copyright (c) 2005-2009 Dovecot authors, see the included COPYING file */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen unsigned int cur_idx;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenstatic void i_stream_seekable_close(struct iostream_private *stream)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen struct seekable_istream *sstream = (struct seekable_istream *)stream;
01937f71b3ae0d5b30b813372f44a3e7e86c89dcTimo Sirainen unsigned int i;
53ea5cb26b07671cfd3eaecd9383f80fb6332ff6Timo Sirainenstatic void i_stream_seekable_destroy(struct iostream_private *stream)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen struct seekable_istream *sstream = (struct seekable_istream *)stream;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen unsigned int i;
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Siraineni_stream_seekable_set_max_buffer_size(struct iostream_private *stream,
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen struct seekable_istream *sstream = (struct seekable_istream *)stream;
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen unsigned int i;
013e3b3942e9550fde619a0b3ce6bdd04edc4268Timo Sirainen i_stream_set_max_buffer_size(sstream->fd_input, max_size);
013e3b3942e9550fde619a0b3ce6bdd04edc4268Timo Sirainen i_stream_set_max_buffer_size(sstream->input[i], max_size);
db87d16551d1081ada01f787ea21aa3ed1402c31Timo Sirainenstatic int copy_to_temp_file(struct seekable_istream *sstream)
8e371a3ce32bd64288786855b8ce0cb63f19f7d1Timo Sirainen /* create a temporary file */
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen fd = open(path, O_RDWR | O_EXCL | O_CREAT, 0600);
4d2211dac61c615c5bdfd501ea54d46c89d41b0fTimo Sirainen /* we just want the fd, unlink it */
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen /* shouldn't happen.. */
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen /* copy our currently read buffer to it */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen if (write_full(fd, sstream->buffer->data, sstream->buffer->used) < 0) {
return ret;
if (size != 0)
return size;
return ret;
const unsigned char *data;
return FALSE;
if (*ret_r <= 0)
return TRUE;
return TRUE;
const unsigned char *data;
return ret;
if (ret <= 0)
return ret;
if (ret <= 0) {
return ret;
static const struct stat *
if (ret == 0) {
struct istream *
const unsigned char *data;
unsigned int count;