From: Timo Sirainen Date: Fri, 7 Jun 2024 10:12:35 +0000 (+0300) Subject: lib-storage: Add mailbox_list_get_count() X-Git-Tag: 2.4.0~1540 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13c52ee481f882cf267aac71f2fbd80de32ff078;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add mailbox_list_get_count() --- diff --git a/src/lib-storage/mailbox-list.c b/src/lib-storage/mailbox-list.c index 002dfc7ac2..21d0edafaa 100644 --- a/src/lib-storage/mailbox-list.c +++ b/src/lib-storage/mailbox-list.c @@ -1666,6 +1666,23 @@ int mailbox_list_mailbox(struct mailbox_list *list, const char *name, flags_r); } +int mailbox_list_get_count(struct mailbox_list *list, unsigned int *count_r) +{ + struct mailbox_list_iterate_context *iter = + mailbox_list_iter_init(list, "*", + MAILBOX_LIST_ITER_RAW_LIST | + MAILBOX_LIST_ITER_NO_AUTO_BOXES | + MAILBOX_LIST_ITER_RETURN_NO_FLAGS); + unsigned int count = 0; + while (mailbox_list_iter_next(iter) != NULL) + count++; + if (mailbox_list_iter_deinit(&iter) < 0) + return -1; + + *count_r = count; + return 0; +} + static bool mailbox_list_init_changelog(struct mailbox_list *list) { struct mailbox_permissions perm; diff --git a/src/lib-storage/mailbox-list.h b/src/lib-storage/mailbox-list.h index bd22973b3e..81e4560e78 100644 --- a/src/lib-storage/mailbox-list.h +++ b/src/lib-storage/mailbox-list.h @@ -298,6 +298,9 @@ struct mailbox_log *mailbox_list_get_changelog(struct mailbox_list *list); current time is used */ void mailbox_list_set_changelog_timestamp(struct mailbox_list *list, time_t stamp); +/* Get the number of mailboxes in the list, ignoring any ACLs. Auto-created + mailboxes that haven't been yet created are not counted. */ +int mailbox_list_get_count(struct mailbox_list *list, unsigned int *count_r); /* Returns a prefix that temporary files should use without conflicting with the namespace. */