Mercurial > dovecot > core-2.2
changeset 21966:44eb00aedb43
lib-storage: Add mailbox_attribute_unregister_internal[s]()
This allows plugins to unregister internal attributes when they're unloaded.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 20 Apr 2017 19:16:46 +0300 |
parents | 8ec0f067fab1 |
children | 040667a0b3be |
files | src/lib-storage/mailbox-attribute.c src/lib-storage/mailbox-attribute.h |
diffstat | 2 files changed, 28 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mailbox-attribute.c Thu Apr 13 15:13:19 2017 +0300 +++ b/src/lib-storage/mailbox-attribute.c Thu Apr 20 19:16:46 2017 +0300 @@ -64,6 +64,29 @@ mailbox_attribute_register_internal(&iattrs[i]); } +void mailbox_attribute_unregister_internal( + const struct mailbox_attribute_internal *iattr) +{ + unsigned int idx; + + if (!array_bsearch_insert_pos(&mailbox_internal_attributes, + iattr, mailbox_attribute_internal_cmp, &idx)) { + i_panic("mailbox_attribute_unregister_internal(%s): " + "key not found", iattr->key); + } + + array_delete(&mailbox_internal_attributes, idx, 1); +} + +void mailbox_attribute_unregister_internals( + const struct mailbox_attribute_internal *iattrs, unsigned int count) +{ + unsigned int i; + + for (i = 0; i < count; i++) + mailbox_attribute_unregister_internal(&iattrs[i]); +} + static const struct mailbox_attribute_internal * mailbox_internal_attribute_get(enum mail_attribute_type type, const char *key)
--- a/src/lib-storage/mailbox-attribute.h Thu Apr 13 15:13:19 2017 +0300 +++ b/src/lib-storage/mailbox-attribute.h Thu Apr 20 19:16:46 2017 +0300 @@ -256,6 +256,11 @@ void mailbox_attribute_register_internals( const struct mailbox_attribute_internal *iattrs, unsigned int count); +void mailbox_attribute_unregister_internal( + const struct mailbox_attribute_internal *iattr); +void mailbox_attribute_unregister_internals( + const struct mailbox_attribute_internal *iattrs, unsigned int count); + /* * Attribute API */