bool opened;
};
+#define SIS_FS(ptr) container_of((ptr), struct sis_fs, fs)
+#define SIS_FILE(ptr) container_of((ptr), struct sis_fs_file, file)
+
static struct fs *fs_sis_alloc(void)
{
struct sis_fs *fs;
static void fs_sis_free(struct fs *_fs)
{
- struct sis_fs *fs = (struct sis_fs *)_fs;
+ struct sis_fs *fs = SIS_FS(_fs);
fs_deinit(&_fs->parent);
i_free(fs);
fs_sis_file_init(struct fs_file *_file, const char *path,
enum fs_open_mode mode, enum fs_open_flags flags)
{
- struct sis_fs_file *file = (struct sis_fs_file *)_file;
- struct sis_fs *fs = (struct sis_fs *)_file->fs;
+ struct sis_fs_file *file = SIS_FILE(_file);
+ struct sis_fs *fs = SIS_FS(_file->fs);
const char *dir, *hash;
file->file.path = i_strdup(path);
static void fs_sis_file_deinit(struct fs_file *_file)
{
- struct sis_fs_file *file = (struct sis_fs_file *)_file;
+ struct sis_fs_file *file = SIS_FILE(_file);
fs_file_deinit(&file->hash_file);
fs_file_free(_file);
static void fs_sis_file_close(struct fs_file *_file)
{
- struct sis_fs_file *file = (struct sis_fs_file *)_file;
+ struct sis_fs_file *file = SIS_FILE(_file);
i_stream_unref(&file->hash_input);
fs_file_close(file->hash_file);
static int fs_sis_write(struct fs_file *_file, const void *data, size_t size)
{
- struct sis_fs_file *file = (struct sis_fs_file *)_file;
+ struct sis_fs_file *file = SIS_FILE(_file);
if (_file->parent == NULL)
return -1;
static void fs_sis_write_stream(struct fs_file *_file)
{
- struct sis_fs_file *file = (struct sis_fs_file *)_file;
+ struct sis_fs_file *file = SIS_FILE(_file);
i_assert(_file->output == NULL);
static int fs_sis_write_stream_finish(struct fs_file *_file, bool success)
{
- struct sis_fs_file *file = (struct sis_fs_file *)_file;
+ struct sis_fs_file *file = SIS_FILE(_file);
if (!success) {
if (_file->parent != NULL)