From: Timo Sirainen Date: Thu, 16 Apr 2015 15:20:15 +0000 (+0300) Subject: lib-fs: fs_class_register() can now be called externally. X-Git-Tag: 2.2.17.rc1~213 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=60eda49183dbec5f3d5ec18b38433581e28e2eba;p=thirdparty%2Fdovecot%2Fcore.git lib-fs: fs_class_register() can now be called externally. --- diff --git a/src/lib-fs/fs-api-private.h b/src/lib-fs/fs-api-private.h index 5e5bc2893d..5c67a7f344 100644 --- a/src/lib-fs/fs-api-private.h +++ b/src/lib-fs/fs-api-private.h @@ -138,6 +138,8 @@ extern const struct fs fs_class_metawrap; extern const struct fs fs_class_sis; extern const struct fs fs_class_sis_queue; +void fs_class_register(const struct fs *fs_class); + void fs_set_error(struct fs *fs, const char *fmt, ...) ATTR_FORMAT(2, 3); void fs_set_critical(struct fs *fs, const char *fmt, ...) ATTR_FORMAT(2, 3); diff --git a/src/lib-fs/fs-api.c b/src/lib-fs/fs-api.c index b6469b1b2e..8609adc6d0 100644 --- a/src/lib-fs/fs-api.c +++ b/src/lib-fs/fs-api.c @@ -16,6 +16,8 @@ struct fs_api_module_register fs_api_module_register = { 0 }; static struct module *fs_modules = NULL; static ARRAY(const struct fs *) fs_classes; +static void fs_classes_init(void); + static int fs_alloc(const struct fs *fs_class, const char *args, const struct fs_settings *set, struct fs **fs_r, const char **error_r) @@ -45,8 +47,10 @@ fs_alloc(const struct fs *fs_class, const char *args, return 0; } -static void fs_class_register(const struct fs *fs_class) +void fs_class_register(const struct fs *fs_class) { + if (!array_is_created(&fs_classes)) + fs_classes_init(); array_append(&fs_classes, &fs_class, 1); }