Lines Matching refs:file

1 /* Copyright (c) 2015-2018 Dovecot authors, see the included COPYING file */
28 struct fs_file file;
98 struct dict_fs_file *file;
101 pool = pool_alloconly_create("fs dict file", 128);
102 file = p_new(pool, struct dict_fs_file, 1);
103 file->pool = pool;
104 return &file->file;
111 struct dict_fs_file *file = (struct dict_fs_file *)_file;
119 file->file.path = p_strdup(file->pool, path);
122 file->file.path = p_strdup_printf(file->pool, "%s/%s", path,
125 file->key = fs->path_prefix == NULL ?
126 p_strdup(file->pool, file->file.path) :
127 p_strconcat(file->pool, fs->path_prefix, file->file.path, NULL);
132 struct dict_fs_file *file = (struct dict_fs_file *)_file;
136 pool_unref(&file->pool);
146 static int fs_dict_lookup(struct dict_fs_file *file)
148 struct dict_fs *fs = (struct dict_fs *)file->file.fs;
152 if (file->value != NULL)
155 ret = dict_lookup(fs->dict, file->pool, file->key, &file->value, &error);
160 fs_set_error(&fs->fs, "dict_lookup(%s) failed: %s", file->key, error);
164 fs_set_error(&fs->fs, "Dict key %s doesn't exist", file->key);
172 struct dict_fs_file *file = (struct dict_fs_file *)_file;
175 if (fs_dict_lookup(file) < 0)
178 input = i_stream_create_from_data(file->value, strlen(file->value));
179 i_stream_set_name(input, file->key);
185 struct dict_fs_file *file = (struct dict_fs_file *)_file;
189 file->write_buffer = buffer_create_dynamic(file->pool, 128);
190 _file->output = o_stream_create_buffer(file->write_buffer);
191 o_stream_set_name(_file->output, file->key);
194 static void fs_dict_write_rename_if_needed(struct dict_fs_file *file)
196 struct dict_fs *fs = (struct dict_fs *)file->file.fs;
199 new_fname = fs_metadata_find(&file->file.metadata, FS_METADATA_WRITE_FNAME);
203 file->file.path = p_strdup(file->pool, new_fname);
204 file->key = fs->path_prefix == NULL ? p_strdup(file->pool, new_fname) :
205 p_strconcat(file->pool, fs->path_prefix, new_fname, NULL);
210 struct dict_fs_file *file = (struct dict_fs_file *)_file;
219 fs_dict_write_rename_if_needed(file);
223 dict_set(trans, file->key, str_c(file->write_buffer));
226 string_t *hex = t_str_new(file->write_buffer->used * 2 + 1);
227 binary_to_hex_append(hex, file->write_buffer->data,
228 file->write_buffer->used);
229 dict_set(trans, file->key, str_c(hex));
234 MAX_BASE64_ENCODED_SIZE(file->write_buffer->used);
236 base64_encode(file->write_buffer->data,
237 file->write_buffer->used, base64);
238 dict_set(trans, file->key, str_c(base64));
251 struct dict_fs_file *file = (struct dict_fs_file *)_file;
255 if (fs_dict_lookup(file) < 0)
257 st_r->st_size = strlen(file->value);
263 struct dict_fs_file *file = (struct dict_fs_file *)_file;
269 dict_unset(trans, file->key);