#define FS_API_PRIVATE_H
#include "fs-api.h"
+#include "module-context.h"
+
+struct fs_api_module_register {
+ unsigned int id;
+};
+
+union fs_api_module_context {
+ struct fs_api_module_register *reg;
+};
+
+extern struct fs_api_module_register fs_api_module_register;
struct fs_vfuncs {
struct fs *(*alloc)(void);
struct fs_iter *iters;
struct fs_stats stats;
+
+ ARRAY(union fs_api_module_context *) module_contexts;
};
struct fs_file {
#include "ostream.h"
#include "fs-api-private.h"
+struct fs_api_module_register fs_api_module_register = { 0 };
+
static struct module *fs_modules = NULL;
static ARRAY(const struct fs *) fs_classes;
fs = fs_class->v.alloc();
fs->last_error = str_new(default_pool, 64);
+ i_array_init(&fs->module_contexts, 5);
T_BEGIN {
ret = fs_class->v.init(fs, args, set);
{
struct fs *fs = *_fs;
string_t *last_error = fs->last_error;
+ struct array module_contexts_arr = fs->module_contexts.arr;
*_fs = NULL;
T_BEGIN {
fs->v.deinit(fs);
} T_END;
+ array_free_i(&module_contexts_arr);
str_free(&last_error);
}