int (*fd_callback)(const char **path_r, void *context);
void *context;
- buffer_t *buffer;
+ buffer_t *membuf;
struct istream **input, *cur_input;
struct istream *fd_input;
unsigned int cur_idx;
struct seekable_istream *sstream = (struct seekable_istream *)stream;
unsigned int i;
- if (sstream->buffer != NULL)
- buffer_free(&sstream->buffer);
+ if (sstream->membuf != NULL)
+ buffer_free(&sstream->membuf);
if (sstream->fd_input != NULL)
i_stream_unref(&sstream->fd_input);
for (i = 0; sstream->input[i] != NULL; i++)
return -1;
/* copy our currently read buffer to it */
- if (write_full(fd, sstream->buffer->data, sstream->buffer->used) < 0) {
+ if (write_full(fd, sstream->membuf->data, sstream->membuf->used) < 0) {
if (!ENOSPACE(errno))
i_error("write_full(%s) failed: %m", path);
i_close_fd(&fd);
return -1;
}
sstream->temp_path = i_strdup(path);
- sstream->write_peak = sstream->buffer->used;
+ sstream->write_peak = sstream->membuf->used;
sstream->fd = fd;
sstream->fd_input =
}
stream->buffer = buffer;
stream->pos = size;
- buffer_free(&sstream->buffer);
+ buffer_free(&sstream->membuf);
return 0;
}
i_assert(stream->skip == 0);
- if (stream->istream.v_offset + stream->pos >= sstream->buffer->used) {
+ if (stream->istream.v_offset + stream->pos >= sstream->membuf->used) {
/* need to read more */
- if (sstream->buffer->used >= stream->max_buffer_size)
+ if (sstream->membuf->used >= stream->max_buffer_size)
return FALSE;
size = sstream->cur_input == NULL ? 0 :
/* we should have more now. */
data = i_stream_get_data(sstream->cur_input, &size);
i_assert(size > 0);
- buffer_append(sstream->buffer, data, size);
+ buffer_append(sstream->membuf, data, size);
i_stream_skip(sstream->cur_input, size);
}
offset = stream->istream.v_offset;
- stream->buffer = CONST_PTR_OFFSET(sstream->buffer->data, offset);
- pos = sstream->buffer->used - offset;
+ stream->buffer = CONST_PTR_OFFSET(sstream->membuf->data, offset);
+ pos = sstream->membuf->used - offset;
*ret_r = pos - stream->pos;
i_assert(*ret_r > 0);
struct istream_private *stream = &sstream->istream;
void *data;
- i_assert(sstream->buffer == NULL);
+ i_assert(sstream->membuf == NULL);
- sstream->buffer =
+ sstream->membuf =
buffer_create_dynamic(default_pool, sstream->write_peak);
- data = buffer_append_space_unsafe(sstream->buffer, sstream->write_peak);
+ data = buffer_append_space_unsafe(sstream->membuf, sstream->write_peak);
if (pread_full(sstream->fd, data, sstream->write_peak, 0) < 0) {
i_error("read(%s) failed: %m", sstream->temp_path);
- buffer_free(&sstream->buffer);
+ buffer_free(&sstream->membuf);
return -1;
}
i_stream_destroy(&sstream->fd_input);
stream->pos -= stream->skip;
stream->skip = 0;
- if (sstream->buffer != NULL) {
+ if (sstream->membuf != NULL) {
if (read_from_buffer(sstream, &ret))
return ret;
i_unreached();
return ret;
}
- i_assert(sstream->buffer == NULL);
+ i_assert(sstream->membuf == NULL);
}
i_assert(stream->istream.v_offset + stream->pos <= sstream->write_peak);
return &stream->statbuf;
}
- if (sstream->buffer != NULL) {
+ if (sstream->membuf != NULL) {
/* we want to know the full size of the file, so read until
we're finished */
old_offset = stream->istream.v_offset;
return i_stream_stat(sstream->fd_input, exact);
} else {
/* buffer is completely in memory */
- i_assert(sstream->buffer != NULL);
+ i_assert(sstream->membuf != NULL);
- stream->statbuf.st_size = sstream->buffer->used;
+ stream->statbuf.st_size = sstream->membuf->used;
return &stream->statbuf;
}
}
sstream = i_new(struct seekable_istream, 1);
sstream->fd_callback = fd_callback;
sstream->context = context;
- sstream->buffer = buffer_create_dynamic(default_pool, BUF_INITIAL_SIZE);
+ sstream->membuf = buffer_create_dynamic(default_pool, BUF_INITIAL_SIZE);
sstream->istream.max_buffer_size = max_buffer_size;
sstream->fd = -1;
sstream->size = (uoff_t)-1;
/* initialize our buffer from first stream's pending data */
data = i_stream_get_data(sstream->cur_input, &size);
- buffer_append(sstream->buffer, data, size);
+ buffer_append(sstream->membuf, data, size);
i_stream_skip(sstream->cur_input, size);
sstream->istream.iostream.close = i_stream_seekable_close;