bool metadata_read;
};
+struct metawrap_fs_iter {
+ struct fs_iter iter;
+ struct fs_iter *super;
+};
+
static struct fs *fs_metawrap_alloc(void)
{
struct metawrap_fs *fs;
static struct fs_iter *
fs_metawrap_iter_init(struct fs *_fs, const char *path,
- enum fs_iter_flags flags)
+ enum fs_iter_flags flags)
{
- return fs_iter_init(_fs->parent, path, flags);
+ struct metawrap_fs_iter *iter;
+
+ iter = i_new(struct metawrap_fs_iter, 1);
+ iter->iter.fs = _fs;
+ iter->iter.flags = flags;
+ iter->super = fs_iter_init(_fs->parent, path, flags);
+ return &iter->iter;
+}
+
+static const char *fs_metawrap_iter_next(struct fs_iter *_iter)
+{
+ struct metawrap_fs_iter *iter = (struct metawrap_fs_iter *)_iter;
+
+ return fs_iter_next(iter->super);
+}
+
+static int fs_metawrap_iter_deinit(struct fs_iter *_iter)
+{
+ struct metawrap_fs_iter *iter = (struct metawrap_fs_iter *)_iter;
+ int ret;
+
+ ret = fs_iter_deinit(&iter->super);
+ i_free(iter);
+ return ret;
}
const struct fs fs_class_metawrap = {
fs_metawrap_rename,
fs_metawrap_delete,
fs_metawrap_iter_init,
- NULL,
- NULL
+ fs_metawrap_iter_next,
+ fs_metawrap_iter_deinit
}
};