Skip to content

Commit

Permalink
lib-storage: Add mailbox_attribute_unregister_internal[s]()
Browse files Browse the repository at this point in the history
This allows plugins to unregister internal attributes when they're unloaded.
  • Loading branch information
sirainen committed Apr 20, 2017
1 parent cc23ad7 commit 0206ab4
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/lib-storage/mailbox-attribute.c
Expand Up @@ -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)
Expand Down
5 changes: 5 additions & 0 deletions src/lib-storage/mailbox-attribute.h
Expand Up @@ -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
*/
Expand Down

0 comments on commit 0206ab4

Please sign in to comment.