return io_stream_copy(&outstream->ostream.ostream, instream);
}
-static int
-o_stream_temp_write_at(struct ostream_private *stream,
- const void *data, size_t size, uoff_t offset)
-{
- struct temp_ostream *tstream =
- container_of(stream, struct temp_ostream, ostream);
-
- if (tstream->fd == -1) {
- i_assert(stream->ostream.offset == tstream->buf->used);
- buffer_write(tstream->buf, offset, data, size);
- stream->ostream.offset = tstream->buf->used;
- } else {
- if (pwrite_full(tstream->fd, data, size, offset) < 0) {
- stream->ostream.stream_errno = errno;
- i_close_fd(&tstream->fd);
- return -1;
- }
- if (tstream->fd_size < offset + size)
- tstream->fd_size = offset + size;
- }
- return 0;
-}
-
static int o_stream_temp_seek(struct ostream_private *_stream, uoff_t offset)
{
_stream->ostream.offset = offset;
tstream->ostream.ostream.blocking = TRUE;
tstream->ostream.sendv = o_stream_temp_sendv;
tstream->ostream.send_istream = o_stream_temp_send_istream;
- tstream->ostream.write_at = o_stream_temp_write_at;
tstream->ostream.seek = o_stream_temp_seek;
tstream->ostream.iostream.close = o_stream_temp_close;
tstream->temp_path_prefix = i_strdup(temp_path_prefix);