Lines Matching refs:file
1 /* Copyright (c) 2015-2018 Dovecot authors, see the included COPYING file */
21 struct fs_file file;
111 struct compress_fs_file *file = i_new(struct compress_fs_file, 1);
112 return &file->file;
120 struct compress_fs_file *file = (struct compress_fs_file *)_file;
122 file->file.path = i_strdup(path);
123 file->fs = fs;
124 file->open_mode = mode;
129 file->file.parent = fs_file_init_parent(_file, path, mode | flags);
134 file->super_read = fs_file_init_parent(_file, path,
137 file->super_read = file->file.parent;
143 struct compress_fs_file *file = (struct compress_fs_file *)_file;
145 if (file->super_read != _file->parent && file->super_read != NULL)
146 fs_file_deinit(&file->super_read);
148 i_free(file->file.path);
149 i_free(file);
154 struct compress_fs_file *file = (struct compress_fs_file *)_file;
156 i_stream_unref(&file->input);
157 if (file->super_read != NULL)
158 fs_file_close(file->super_read);
164 fs_compress_try_create_stream(struct compress_fs_file *file,
170 if (!file->fs->try_plain)
171 return file->fs->handler->create_istream(plain_input, FALSE);
175 try_inputs[0] = file->fs->handler->create_istream(child_input, FALSE);
189 struct compress_fs_file *file = (struct compress_fs_file *)_file;
192 if (file->input != NULL) {
193 i_stream_ref(file->input);
194 i_stream_seek(file->input, 0);
195 return file->input;
198 input = fs_read_stream(file->super_read, max_buffer_size);
199 file->input = fs_compress_try_create_stream(file, input);
202 i_stream_ref(file->input);
203 return file->input;
208 struct compress_fs_file *file = (struct compress_fs_file *)_file;
210 if (file->fs->compress_level == 0) {
217 file->temp_output =
221 _file->output = file->fs->handler->
222 create_ostream(file->temp_output, file->fs->compress_level);
227 struct compress_fs_file *file = (struct compress_fs_file *)_file;
231 if (file->fs->compress_level == 0)
237 if (_file->output == file->super_output)
243 o_stream_destroy(&file->temp_output);
244 if (file->super_output != NULL)
245 fs_write_stream_abort_parent(_file, &file->super_output);
249 if (file->super_output != NULL) {
250 i_assert(file->temp_output == NULL);
251 return fs_write_stream_finish(_file->parent, &file->super_output);
253 if (file->temp_output == NULL) {
255 i_assert(file->super_output == NULL);
256 return fs_write_stream_finish(_file->parent, &file->temp_output);
258 /* finish writing the temporary file */
259 input = iostream_temp_finish(&file->temp_output, IO_BLOCK_SIZE);
260 file->super_output = fs_write_stream(_file->parent);
261 o_stream_nsend_istream(file->super_output, input);
262 ret = fs_write_stream_finish(_file->parent, &file->super_output);