]> 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 16:20:27 +0000 (19:20 +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 b09057fe58ec0d43a21c9645831366b85e4b5f35..09d76e2940143c84c0ddc3de5dec53e9a9ce0d35 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 09abb996611b6fdb7641bb69ab3f2213f021a531..2e042e0b6376c78da3dae51f75055734a0a6f2b5 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
  */