From: Timo Sirainen Date: Mon, 12 Sep 2011 10:13:35 +0000 (+0300) Subject: lib-storage: Handle INBOX in the common mailbox_exists() code. X-Git-Tag: 2.1.alpha2~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=352cd70b5850eb0815f1ee3bb4e7533d2c8c4c5f;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Handle INBOX in the common mailbox_exists() code. --- diff --git a/src/lib-storage/index/index-storage.c b/src/lib-storage/index/index-storage.c index a38d5f74b4..da9cd1cf0f 100644 --- a/src/lib-storage/index/index-storage.c +++ b/src/lib-storage/index/index-storage.c @@ -151,28 +151,19 @@ index_mailbox_alloc_index(struct mailbox *box) box->index_prefix); } -int index_storage_mailbox_exists(struct mailbox *box, bool auto_boxes, +int index_storage_mailbox_exists(struct mailbox *box, + bool auto_boxes ATTR_UNUSED, enum mailbox_existence *existence_r) { - return index_storage_mailbox_exists_full(box, auto_boxes, - NULL, existence_r); + return index_storage_mailbox_exists_full(box, NULL, existence_r); } -int index_storage_mailbox_exists_full(struct mailbox *box, bool auto_boxes, - const char *subdir, +int index_storage_mailbox_exists_full(struct mailbox *box, const char *subdir, enum mailbox_existence *existence_r) { struct stat st; const char *path, *path2; - if (strcmp(box->name, "INBOX") == 0 && - (box->list->ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0 && - auto_boxes) { - /* INBOX always exists */ - *existence_r = MAILBOX_EXISTENCE_SELECT; - return 0; - } - /* see if it's selectable */ path = mailbox_list_get_path(box->list, box->name, MAILBOX_LIST_PATH_TYPE_MAILBOX); diff --git a/src/lib-storage/index/index-storage.h b/src/lib-storage/index/index-storage.h index 1a7503649a..800c058184 100644 --- a/src/lib-storage/index/index-storage.h +++ b/src/lib-storage/index/index-storage.h @@ -59,8 +59,7 @@ void index_storage_mailbox_alloc(struct mailbox *box, const char *vname, const char *index_prefix); int index_storage_mailbox_exists(struct mailbox *box, bool auto_boxes, enum mailbox_existence *existence_r); -int index_storage_mailbox_exists_full(struct mailbox *box, bool auto_boxes, - const char *subdir, +int index_storage_mailbox_exists_full(struct mailbox *box, const char *subdir, enum mailbox_existence *existence_r); int index_storage_mailbox_open(struct mailbox *box, bool move_to_memory); int index_storage_mailbox_enable(struct mailbox *box, diff --git a/src/lib-storage/index/maildir/maildir-storage.c b/src/lib-storage/index/maildir/maildir-storage.c index 7eb9b6c499..ae3fce339f 100644 --- a/src/lib-storage/index/maildir/maildir-storage.c +++ b/src/lib-storage/index/maildir/maildir-storage.c @@ -323,11 +323,11 @@ static bool maildir_storage_is_readonly(struct mailbox *box) return FALSE; } -static int maildir_mailbox_exists(struct mailbox *box, bool auto_boxes, - enum mailbox_existence *existence_r) +static int +maildir_mailbox_exists(struct mailbox *box, bool auto_boxes ATTR_UNUSED, + enum mailbox_existence *existence_r) { - return index_storage_mailbox_exists_full(box, auto_boxes, - "cur", existence_r); + return index_storage_mailbox_exists_full(box, "cur", existence_r); } static int maildir_mailbox_open(struct mailbox *box) diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index bc69d804ec..39abef1813 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -694,6 +694,12 @@ int mailbox_exists(struct mailbox *box, bool auto_boxes, return 0; } + if (strcmp(box->name, "INBOX") == 0 && box->inbox_user && auto_boxes) { + /* INBOX always exists */ + *existence_r = MAILBOX_EXISTENCE_SELECT; + return 0; + } + return box->v.exists(box, auto_boxes, existence_r); }