]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mbox recent fixes.
authorTimo Sirainen <tss@iki.fi>
Sun, 11 Jul 2004 22:45:29 +0000 (01:45 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 11 Jul 2004 22:45:29 +0000 (01:45 +0300)
--HG--
branch : HEAD

src/lib-storage/index/mbox/mbox-sync.c

index 23cc86b8f036f0a84b44ae27224363bdb99cc914..25859551f829088ddf08eda888d3ff9bf43237ff 100644 (file)
@@ -211,12 +211,13 @@ mbox_sync_read_next_mail(struct mbox_sync_context *sync_ctx,
 
        /* save the offset permanently with recent flag state */
        mail_ctx->mail.from_offset = mail_ctx->from_offset;
-       if ((mail_ctx->mail.flags & MBOX_NONRECENT) == 0) {
+       if ((mail_ctx->mail.flags & MBOX_NONRECENT) == 0 && !mail_ctx->pseudo) {
                if (!sync_ctx->ibox->keep_recent) {
                        /* need to add 'O' flag to Status-header */
                        mail_ctx->need_rewrite = TRUE;
                }
-               // FIXME: save it somewhere
+               index_mailbox_set_recent(sync_ctx->ibox,
+                                        mail_ctx->seq - mail_ctx->pseudo);
        }
        return 1;
 }
@@ -442,6 +443,9 @@ static int mbox_sync_update_index(struct mbox_sync_context *sync_ctx,
                /* new message */
                mail_index_append(sync_ctx->t, mail->uid, &sync_ctx->idx_seq);
                mbox_flags = mail->flags & (MAIL_FLAGS_MASK^MAIL_RECENT);
+               if (sync_ctx->ibox->keep_recent &&
+                   (mail->flags & MBOX_NONRECENT) == 0)
+                       mbox_flags |= MAIL_RECENT;
                mail_index_update_flags(sync_ctx->t, sync_ctx->idx_seq,
                                        MODIFY_REPLACE, mbox_flags,
                                        mail->keywords);
@@ -469,6 +473,9 @@ static int mbox_sync_update_index(struct mbox_sync_context *sync_ctx,
                mbox_flags = (rec->flags & ~MAIL_FLAGS_MASK) |
                        (mail->flags & (MAIL_FLAGS_MASK^MAIL_RECENT));
 
+               if (!sync_ctx->ibox->keep_recent)
+                       mbox_flags &= ~MAIL_RECENT;
+
                if (idx_flags != mbox_flags ||
                    memcmp(idx_keywords, mail->keywords,
                           INDEX_KEYWORDS_BYTE_COUNT) != 0) {