Lines Matching refs:mails
331 struct mbox_sync_mail *mails,
349 mail_ctx->mail.body_size = mails[idx].body_size;
352 if (mails[idx].uid != 0) {
356 sync_ctx->next_uid = mails[idx].uid;
357 sync_ctx->prev_msg_uid = mails[idx].uid - 1;
360 i_assert(mails[idx].pseudo);
366 if (mails[idx].from_offset +
368 sync_ctx->dest_first_mail = mails[idx].from_offset == 0;
373 mails[idx].from_offset += first_mail_expunge_extra;
378 i_assert(mail_ctx->mail.pseudo == mails[idx].pseudo);
385 if (mails[idx].space != 0) {
386 if (mails[idx].space < 0) {
390 mbox_sync_update_header_from(mail_ctx, &mails[idx]);
402 struct mbox_sync_mail *mails,
412 if (mbox_sync_seek(sync_ctx, mails[idx].from_offset) < 0)
415 if (mbox_sync_read_next(sync_ctx, &new_mail_ctx, mails, seq, idx,
429 if (need_space != (uoff_t)-mails[idx].space) {
438 seq, mails[idx].uid, mails[idx].uid_broken ? 1 : 0,
439 (uoff_t)-mails[idx].space, need_space);
447 i_assert(mails[idx].from_offset >= expunged_space);
448 if (mbox_move(sync_ctx, mails[idx].from_offset - expunged_space,
449 mails[idx].from_offset,
450 mails[idx].offset - mails[idx].from_offset) < 0)
454 if (mails[idx].space == 0) {
476 i_assert(dest_offset >= mails[idx].from_offset - expunged_space);
489 mails[idx].offset = dest_offset +
491 mails[idx].space = mail_ctx->mail.space;
500 struct mbox_sync_mail *mails;
511 mails = array_get_modifiable(&sync_ctx->mails, &count);
514 /* if there's expunges in mails[], we would get more correct balancing
525 start_offset = mails[0].from_offset;
528 if (!mails[first_nonexpunged_idx].expunged)
530 expunged_space += mails[first_nonexpunged_idx].space;
532 i_assert(mails[first_nonexpunged_idx].space < 0);
544 mails[idx].space;
547 next_end_offset = mails[idx].offset;
549 if (mails[idx].space <= 0 && !mails[idx].expunged) {
555 next_move_diff = -mails[idx].space;
556 if (mbox_sync_read_and_move(sync_ctx, mail_ctx, mails,
565 move_diff -= next_move_diff + mails[idx].space;
575 offset = mails[idx].offset + mails[idx].space;
584 move_diff += mails[idx].space;
585 if (!mails[idx].expunged) {
587 mails[idx].space = padding_per_mail;
590 mails[idx].offset,
596 mails[idx].offset += move_diff;
604 mails[idx].from_offset += move_diff;
608 i_assert(mails[idx].from_offset == start_offset);