struct fs_iter *
fs_iter_init_parent(struct fs_iter *parent,
const char *path, enum fs_iter_flags flags);
+void fs_file_free(struct fs_file *file);
/* Same as fs_write_stream_abort_error(), except it closes the *parent* file
and error is left untouched */
pool_unref(&metadata_pool);
}
+void fs_file_free(struct fs_file *file)
+{
+ fs_file_deinit(&file->parent);
+}
+
void fs_file_close(struct fs_file *file)
{
if (file == NULL)
i_assert(_file->output == NULL);
+ fs_file_free(_file);
pool_unref(&file->pool);
}
if (file->super_read != _file->parent)
fs_file_deinit(&file->super_read);
str_free(&file->metadata_header);
- fs_file_deinit(&_file->parent);
+ fs_file_free(_file);
i_free(file->file.path);
i_free(file);
}
break;
}
+ fs_file_free(_file);
i_free(file->temp_path);
i_free(file->full_path);
i_free(file->file.path);
{
struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
- fs_file_deinit(&file->file.parent);
+ fs_file_free(_file);
i_free(file->file.path);
i_free(file);
}
{
struct sis_queue_fs_file *file = (struct sis_queue_fs_file *)_file;
- fs_file_deinit(&_file->parent);
+ fs_file_free(_file);
i_free(file->file.path);
i_free(file);
}
struct sis_fs_file *file = (struct sis_fs_file *)_file;
fs_file_deinit(&file->hash_file);
- fs_file_deinit(&_file->parent);
+ fs_file_free(_file);
i_free(file->hash);
i_free(file->hash_path);
i_free(file->file.path);
{
struct test_fs_file *file = (struct test_fs_file *)_file;
+ fs_file_free(_file);
buffer_free(&file->contents);
i_free(file->file.path);
i_free(file);
if (file->super_read != _file->parent)
fs_file_deinit(&file->super_read);
- fs_file_deinit(&_file->parent);
+ fs_file_free(_file);
i_free(file->file.path);
i_free(file);
}
if (file->super_read != _file->parent)
fs_file_deinit(&file->super_read);
- fs_file_deinit(&_file->parent);
+ fs_file_free(_file);
i_free(file->file.path);
i_free(file);
}