Lines Matching defs:bbox

159 					   struct virtual_backend_box *bbox)
166 get_user_visible_mailbox_name(bbox->box),
167 mailbox_get_last_error(bbox->box, &error));
169 mailbox_free(&bbox->box);
171 if (error == MAIL_ERROR_PERM && bbox->wildcard) {
179 struct virtual_backend_box *bbox,
187 i_assert(bbox->box == NULL);
189 if (!bbox->clear_recent)
192 mailbox = bbox->name;
194 bbox->box = mailbox_alloc(ns->list, mailbox, flags);
195 MODULE_CONTEXT_SET(bbox->box, virtual_storage_module, bbox);
196 mailbox_set_reason(bbox->box, mbox->box.reason == NULL ?
200 if (bbox == mbox->save_bbox) {
206 if (mailbox_exists(bbox->box, TRUE, &existence) < 0)
207 return virtual_backend_box_open_failed(mbox, bbox);
214 mbox->box.vname, bbox->box->vname);
216 mailbox_free(&bbox->box);
220 i_array_init(&bbox->uids, 64);
221 i_array_init(&bbox->sync_pending_removes, 64);
224 (void)mailbox_enable(bbox->box, MAILBOX_FEATURE_CONDSTORE);
284 void virtual_backend_box_sync_mail_unset(struct virtual_backend_box *bbox)
288 if (bbox->sync_mail != NULL) {
289 trans = bbox->sync_mail->transaction;
290 mail_free(&bbox->sync_mail);
295 static bool virtual_backend_box_can_close(struct virtual_backend_box *bbox)
297 if (bbox->box->notify_callback != NULL) {
301 return bbox->notify != NULL;
303 if (array_count(&bbox->sync_pending_removes) > 0) {
315 struct virtual_backend_box *bbox;
320 for (bbox = mbox->open_backend_boxes_head; bbox != NULL; bbox = bbox->next_open) {
321 i_assert(bbox->box->opened);
323 if (bbox != except_bbox &&
324 bbox->box->transaction_count == 0 &&
325 virtual_backend_box_can_close(bbox)) {
326 i_assert(bbox->sync_mail == NULL);
327 virtual_backend_box_close(mbox, bbox);
334 for (bbox = mbox->open_backend_boxes_head; bbox != NULL; bbox = bbox->next_open) {
335 if (bbox != except_bbox &&
336 bbox->sync_mail != NULL &&
337 bbox->box->transaction_count == 1 &&
338 virtual_backend_box_can_close(bbox)) {
339 virtual_backend_box_sync_mail_unset(bbox);
340 i_assert(bbox->box->transaction_count == 0);
341 virtual_backend_box_close(mbox, bbox);
350 struct virtual_backend_box *bbox = VIRTUAL_CONTEXT(box);
353 if (bbox != NULL && bbox->open_tracked) {
356 virtual_backend_box_close(bbox->virtual_mbox, bbox);
375 struct virtual_backend_box *bbox = VIRTUAL_CONTEXT(box);
378 if (bbox == NULL) {
382 i_assert(!bbox->open_tracked);
383 mbox = bbox->virtual_mbox;
388 virtual_backend_box_close_any_except(mbox, bbox))
391 bbox->open_tracked = TRUE;
394 &mbox->open_backend_boxes_tail, bbox,
399 struct virtual_backend_box *bbox)
401 i_assert(!bbox->box->opened);
406 virtual_backend_box_close_any_except(mbox, bbox))
409 return mailbox_open(bbox->box);
413 struct virtual_backend_box *bbox)
415 i_assert(bbox->box->opened);
416 i_assert(bbox->open_tracked);
418 if (bbox->search_result != NULL)
419 mailbox_search_result_free(&bbox->search_result);
421 if (bbox->search_args != NULL &&
422 bbox->search_args_initialized) {
423 mail_search_args_deinit(bbox->search_args);
424 bbox->search_args_initialized = FALSE;
428 bbox->open_tracked = FALSE;
431 &mbox->open_backend_boxes_tail, bbox,
435 if (bbox->notify_changes_started)
436 mailbox_notify_changes_stop(bbox->box);
437 bbox->notify_changes_started = FALSE;
439 mailbox_close(bbox->box);
443 struct virtual_backend_box *bbox)
446 &mbox->open_backend_boxes_tail, bbox,
449 &mbox->open_backend_boxes_tail, bbox,
676 virtual_notify_callback(struct mailbox *bbox ATTR_UNUSED, struct mailbox *box)
681 static void virtual_backend_box_changed(struct virtual_backend_box *bbox)
683 virtual_notify_callback(bbox->box, &bbox->virtual_mbox->box);
686 static int virtual_notify_start(struct virtual_backend_box *bbox)
688 i_assert(bbox->notify == NULL);
689 if (mailbox_list_notify_init(bbox->box->list, MAILBOX_LIST_NOTIFY_STATUS,
690 &bbox->notify) < 0)
693 mailbox_list_notify_wait(bbox->notify, virtual_backend_box_changed, bbox);
750 struct virtual_backend_box *bbox;
758 bbox = mbox->lookup_prev_bbox;
760 bbox = virtual_backend_box_lookup_name(mbox, backend_mailbox->vname);
761 mbox->lookup_prev_bbox = bbox;
763 if (bbox == NULL)
766 uids = array_get(&bbox->uids, &count); i = 0;
786 struct virtual_backend_box *bbox;
794 bbox = mbox->lookup_prev_bbox;
796 bbox = virtual_backend_box_lookup_name(mbox, backend_mailbox->vname);
797 mbox->lookup_prev_bbox = bbox;
799 if (bbox == NULL)
802 uids = array_get(&bbox->uids, &count); i = 0;