From: Timo Sirainen Date: Wed, 2 Mar 2022 22:56:58 +0000 (-0500) Subject: lib-storage: Add default implementation for mailbox_list_vfuncs.get_storage() X-Git-Tag: 2.4.0~3796 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d973f4b3ba1b03d2b83d467a660df1fc05a93da8;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add default implementation for mailbox_list_vfuncs.get_storage() --- diff --git a/src/lib-storage/index/imapc/imapc-list.c b/src/lib-storage/index/imapc/imapc-list.c index 5ecf6faf91..c3d1ac1edd 100644 --- a/src/lib-storage/index/imapc/imapc-list.c +++ b/src/lib-storage/index/imapc/imapc-list.c @@ -990,6 +990,7 @@ struct mailbox_list imapc_mailbox_list = { .alloc = imapc_list_alloc, .init = imapc_list_init, .deinit = imapc_list_deinit, + .get_storage = mailbox_list_default_get_storage, .get_hierarchy_sep = imapc_list_get_hierarchy_sep, .get_vname = imapc_list_get_vname, .get_storage_name = imapc_list_get_storage_name, diff --git a/src/lib-storage/list/mailbox-list-fs.c b/src/lib-storage/list/mailbox-list-fs.c index 0948dcd367..b3dde69f31 100644 --- a/src/lib-storage/list/mailbox-list-fs.c +++ b/src/lib-storage/list/mailbox-list-fs.c @@ -554,6 +554,7 @@ struct mailbox_list fs_mailbox_list = { .v = { .alloc = fs_list_alloc, .deinit = fs_list_deinit, + .get_storage = mailbox_list_default_get_storage, .get_hierarchy_sep = fs_list_get_hierarchy_sep, .get_vname = mailbox_list_default_get_vname, .get_storage_name = mailbox_list_default_get_storage_name, diff --git a/src/lib-storage/list/mailbox-list-index-backend.c b/src/lib-storage/list/mailbox-list-index-backend.c index 21657b9eba..4ae85bf110 100644 --- a/src/lib-storage/list/mailbox-list-index-backend.c +++ b/src/lib-storage/list/mailbox-list-index-backend.c @@ -944,6 +944,7 @@ struct mailbox_list index_mailbox_list = { .alloc = index_list_alloc, .init = index_list_init, .deinit = index_list_deinit, + .get_storage = mailbox_list_default_get_storage, .get_hierarchy_sep = index_list_get_hierarchy_sep, .get_vname = mailbox_list_default_get_vname, .get_storage_name = mailbox_list_default_get_storage_name, diff --git a/src/lib-storage/list/mailbox-list-maildir.c b/src/lib-storage/list/mailbox-list-maildir.c index 265f3d072b..c02f5d6d0e 100644 --- a/src/lib-storage/list/mailbox-list-maildir.c +++ b/src/lib-storage/list/mailbox-list-maildir.c @@ -498,6 +498,7 @@ struct mailbox_list maildir_mailbox_list = { .v = { .alloc = maildir_list_alloc, .deinit = maildir_list_deinit, + .get_storage = mailbox_list_default_get_storage, .get_hierarchy_sep = maildir_list_get_hierarchy_sep, .get_vname = mailbox_list_default_get_vname, .get_storage_name = mailbox_list_default_get_storage_name, @@ -527,6 +528,7 @@ struct mailbox_list imapdir_mailbox_list = { .v = { .alloc = imapdir_list_alloc, .deinit = maildir_list_deinit, + .get_storage = mailbox_list_default_get_storage, .get_hierarchy_sep = maildir_list_get_hierarchy_sep, .get_vname = mailbox_list_default_get_vname, .get_storage_name = mailbox_list_default_get_storage_name, diff --git a/src/lib-storage/list/mailbox-list-none.c b/src/lib-storage/list/mailbox-list-none.c index fb5c608e04..748957eeab 100644 --- a/src/lib-storage/list/mailbox-list-none.c +++ b/src/lib-storage/list/mailbox-list-none.c @@ -159,6 +159,7 @@ struct mailbox_list none_mailbox_list = { .v = { .alloc = none_list_alloc, .deinit = none_list_deinit, + .get_storage = mailbox_list_default_get_storage, .get_hierarchy_sep = none_list_get_hierarchy_sep, .get_vname = mailbox_list_default_get_vname, .get_storage_name = mailbox_list_default_get_storage_name, diff --git a/src/lib-storage/mailbox-list-private.h b/src/lib-storage/mailbox-list-private.h index 7f85e49c11..909d62b79b 100644 --- a/src/lib-storage/mailbox-list-private.h +++ b/src/lib-storage/mailbox-list-private.h @@ -198,6 +198,10 @@ const char * mailbox_list_unescape_name_params(const char *src, const char *ns_prefix, char ns_sep, char list_sep, char escape_char); +int mailbox_list_default_get_storage(struct mailbox_list **list, + const char **vname, + enum mailbox_list_get_storage_flags flags, + struct mail_storage **storage_r); const char *mailbox_list_default_get_storage_name(struct mailbox_list *list, const char *vname); const char *mailbox_list_default_get_vname(struct mailbox_list *list, diff --git a/src/lib-storage/mailbox-list.c b/src/lib-storage/mailbox-list.c index f6ced9c844..c68475ff3e 100644 --- a/src/lib-storage/mailbox-list.c +++ b/src/lib-storage/mailbox-list.c @@ -889,15 +889,13 @@ mailbox_list_get_storage_driver(struct mailbox_list *list, const char *driver, return 0; } -int mailbox_list_get_storage(struct mailbox_list **list, const char **vname, - enum mailbox_list_get_storage_flags flags, - struct mail_storage **storage_r) +int mailbox_list_default_get_storage(struct mailbox_list **list, + const char **vname, + enum mailbox_list_get_storage_flags flags ATTR_UNUSED, + struct mail_storage **storage_r) { const struct mailbox_settings *set; - if ((*list)->v.get_storage != NULL) - return (*list)->v.get_storage(list, vname, flags, storage_r); - set = mailbox_settings_find((*list)->ns, *vname); if (set != NULL && set->driver != NULL && set->driver[0] != '\0') { return mailbox_list_get_storage_driver(*list, set->driver, @@ -907,6 +905,13 @@ int mailbox_list_get_storage(struct mailbox_list **list, const char **vname, return 0; } +int mailbox_list_get_storage(struct mailbox_list **list, const char **vname, + enum mailbox_list_get_storage_flags flags, + struct mail_storage **storage_r) +{ + return (*list)->v.get_storage(list, vname, flags, storage_r); +} + void mailbox_list_get_default_storage(struct mailbox_list *list, struct mail_storage **storage) {