static int ns_mailbox_try_alloc(struct mail_namespace *ns, const guid_128_t guid, struct mailbox **box_r, const char **error_r) { struct mailbox *box; enum mailbox_existence existence; enum mail_error err; int ret; box = mailbox_alloc_guid(ns->list, guid, 0); ret = mailbox_exists(box, FALSE, &existence); if (ret < 0) { *error_r = mailbox_get_last_error(box, &err); mailbox_free(&box); return -1; } if (existence != MAILBOX_EXISTENCE_SELECT) { mailbox_free(&box); *error_r = existence == MAILBOX_EXISTENCE_NONE ? "Mailbox was already deleted" : "Mailbox is no longer selectable"; return 0; } *box_r = box; return 1; }
static int ns_mailbox_try_alloc(struct dsync_brain *brain, struct mail_namespace *ns, const guid_128_t guid, struct mailbox **box_r, const char **errstr_r, enum mail_error *error_r) { enum mailbox_flags flags = 0; struct mailbox *box; enum mailbox_existence existence; int ret; if (brain->backup_send) { /* make sure mailbox isn't modified */ flags |= MAILBOX_FLAG_READONLY; } box = mailbox_alloc_guid(ns->list, guid, flags); ret = mailbox_exists(box, FALSE, &existence); if (ret < 0) { *errstr_r = mailbox_get_last_error(box, error_r); mailbox_free(&box); return -1; } if (existence != MAILBOX_EXISTENCE_SELECT) { mailbox_free(&box); *errstr_r = existence == MAILBOX_EXISTENCE_NONE ? "Mailbox was already deleted" : "Mailbox is no longer selectable"; return 0; } *box_r = box; return 1; }
static bool acl_ns_prefix_exists(struct mail_namespace *ns) { struct mailbox *box; const char *vname; enum mailbox_existence existence; bool ret; if (ns->list->mail_set->mail_shared_explicit_inbox) return FALSE; vname = t_strndup(ns->prefix, ns->prefix_len-1); box = mailbox_alloc(ns->list, vname, 0); ret = mailbox_exists(box, FALSE, &existence) == 0 && existence == MAILBOX_EXISTENCE_SELECT; mailbox_free(&box); return ret; }
static int ns_mailbox_try_alloc(struct mail_namespace *ns, const guid_128_t guid, struct mailbox **box_r) { struct mailbox *box; enum mailbox_existence existence; int ret; box = mailbox_alloc_guid(ns->list, guid, 0); ret = mailbox_exists(box, FALSE, &existence); if (ret < 0) { mailbox_free(&box); return -1; } if (existence != MAILBOX_EXISTENCE_SELECT) { mailbox_free(&box); return 0; } *box_r = box; return 1; }