From 3117285180b88dbd45392fd183d62758ff092669 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 19 Jun 2018 14:12:45 +0300 Subject: [PATCH] quota: Add quota_root_iter_init_user() --- src/plugins/quota/quota.c | 21 ++++++++++++++++----- src/plugins/quota/quota.h | 1 + 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/plugins/quota/quota.c b/src/plugins/quota/quota.c index 7fbdc1be93..eadd0a8907 100644 --- a/src/plugins/quota/quota.c +++ b/src/plugins/quota/quota.c @@ -636,14 +636,24 @@ void quota_remove_user_namespace(struct mail_namespace *ns) } struct quota_root_iter * -quota_root_iter_init(struct mailbox *box) +quota_root_iter_init_user(struct mail_user *user) { struct quota_root_iter *iter; iter = i_new(struct quota_root_iter, 1); - iter->quota = box->list->ns->owner != NULL ? - quota_get_mail_user_quota(box->list->ns->owner) : - quota_get_mail_user_quota(box->list->ns->user); + iter->quota = quota_get_mail_user_quota(user); + return iter; +} + +struct quota_root_iter * +quota_root_iter_init(struct mailbox *box) +{ + struct quota_root_iter *iter; + struct mail_user *user; + + user = box->list->ns->owner != NULL ? + box->list->ns->owner : box->list->ns->user; + iter = quota_root_iter_init_user(user); iter->box = box; return iter; } @@ -702,7 +712,8 @@ struct quota_root *quota_root_iter_next(struct quota_root_iter *iter) return NULL; for (; iter->i < count; iter->i++) { - if (!quota_root_is_visible(roots[iter->i], iter->box, FALSE)) + if (iter->box != NULL && + !quota_root_is_visible(roots[iter->i], iter->box, FALSE)) continue; root = roots[iter->i]; diff --git a/src/plugins/quota/quota.h b/src/plugins/quota/quota.h index 5b15f84684..29a48f403a 100644 --- a/src/plugins/quota/quota.h +++ b/src/plugins/quota/quota.h @@ -89,6 +89,7 @@ int quota_init(struct quota_settings *quota_set, struct mail_user *user, void quota_deinit(struct quota **quota); /* List all visible quota roots. They don't need to be freed. */ +struct quota_root_iter *quota_root_iter_init_user(struct mail_user *user); struct quota_root_iter *quota_root_iter_init(struct mailbox *box); struct quota_root *quota_root_iter_next(struct quota_root_iter *iter); void quota_root_iter_deinit(struct quota_root_iter **iter);