]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add mailbox_attribute_unregister_internal[s]()
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 20 Apr 2017 16:16:46 +0000 (19:16 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 20 Apr 2017 18:56:17 +0000 (21:56 +0300)
This allows plugins to unregister internal attributes when they're unloaded.

src/lib-storage/mailbox-attribute.c
src/lib-storage/mailbox-attribute.h

index 80c4736a1e13be4d16f38604b851881347335a62..6e3572fb420ab27996187ea5119d8287a0a4d89e 100644 (file)
@@ -64,6 +64,29 @@ void mailbox_attribute_register_internals(
                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)
index 94f4cdc26ff9c8af3a2aa12a931b9905e4d08b3b..1b62c3ded84f48e6be480b241385afc39f42f21d 100644 (file)
@@ -256,6 +256,11 @@ void mailbox_attribute_register_internal(
 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
  */