[dovecot-cvs] dovecot/src/lib-index mail-index-fsck.c, 1.19,
1.20 mail-index-sync-update.c, 1.15, 1.16 mail-index.c, 1.121,
1.122 mail-index.h, 1.109, 1.110
cras at procontrol.fi
cras at procontrol.fi
Sun May 23 01:23:31 EEST 2004
Update of /home/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv5619/lib-index
Modified Files:
mail-index-fsck.c mail-index-sync-update.c mail-index.c
mail-index.h
Log Message:
Recent flag fixes. Should work perfectly now with maildir.
Index: mail-index-fsck.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-fsck.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- a/mail-index-fsck.c 1 May 2004 16:22:54 -0000 1.19
+++ b/mail-index-fsck.c 22 May 2004 22:23:29 -0000 1.20
@@ -41,6 +41,7 @@
}
hdr.messages_count = 0;
+ hdr.recent_messages_count = 0;
hdr.seen_messages_count = 0;
hdr.deleted_messages_count = 0;
@@ -56,6 +57,8 @@
}
hdr.messages_count++;
+ if ((rec->flags & MAIL_RECENT) != 0)
+ hdr.recent_messages_count++;
if ((rec->flags & MAIL_SEEN) != 0)
hdr.seen_messages_count++;
if ((rec->flags & MAIL_DELETED) != 0)
@@ -88,6 +91,7 @@
hdr.first_deleted_uid_lowwater = hdr.next_uid;
CHECK(messages_count, !=);
+ CHECK(recent_messages_count, !=);
CHECK(seen_messages_count, !=);
CHECK(deleted_messages_count, !=);
Index: mail-index-sync-update.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-sync-update.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- a/mail-index-sync-update.c 22 May 2004 21:30:42 -0000 1.15
+++ b/mail-index-sync-update.c 22 May 2004 22:23:29 -0000 1.16
@@ -20,20 +20,28 @@
void mail_index_header_update_counts(struct mail_index_header *hdr,
uint8_t old_flags, uint8_t new_flags)
{
+ if (((old_flags ^ new_flags) & MAIL_RECENT) != 0) {
+ /* different recent-flag */
+ if ((old_flags & MAIL_RECENT) == 0)
+ hdr->recent_messages_count++;
+ else if (--hdr->recent_messages_count == 0)
+ hdr->first_recent_uid_lowwater = hdr->next_uid;
+ }
+
if (((old_flags ^ new_flags) & MAIL_SEEN) != 0) {
/* different seen-flag */
- if ((old_flags & MAIL_SEEN) == 0)
- hdr->seen_messages_count++;
- else
+ if ((old_flags & MAIL_SEEN) != 0)
hdr->seen_messages_count--;
+ else if (++hdr->seen_messages_count == hdr->messages_count)
+ hdr->first_unseen_uid_lowwater = hdr->next_uid;
}
if (((old_flags ^ new_flags) & MAIL_DELETED) != 0) {
/* different deleted-flag */
if ((old_flags & MAIL_DELETED) == 0)
hdr->deleted_messages_count++;
- else
- hdr->deleted_messages_count--;
+ else if (--hdr->deleted_messages_count == 0)
+ hdr->first_deleted_uid_lowwater = hdr->next_uid;
}
}
Index: mail-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -d -r1.121 -r1.122
--- a/mail-index.c 16 May 2004 20:20:24 -0000 1.121
+++ b/mail-index.c 22 May 2004 22:23:29 -0000 1.122
@@ -77,7 +77,8 @@
if (hdr->next_uid == 0)
return 0;
- if (hdr->seen_messages_count > hdr->messages_count ||
+ if (hdr->recent_messages_count > hdr->messages_count ||
+ hdr->seen_messages_count > hdr->messages_count ||
hdr->deleted_messages_count > hdr->messages_count)
return 0;
if (hdr->first_recent_uid_lowwater > hdr->next_uid ||
Index: mail-index.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.h,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -d -r1.109 -r1.110
--- a/mail-index.h 22 May 2004 21:30:42 -0000 1.109
+++ b/mail-index.h 22 May 2004 22:23:29 -0000 1.110
@@ -6,7 +6,7 @@
#define MAIL_INDEX_MAJOR_VERSION 4
#define MAIL_INDEX_MINOR_VERSION 0
-#define MAIL_INDEX_HEADER_MIN_SIZE 68
+#define MAIL_INDEX_HEADER_MIN_SIZE 72
/* Number of keywords in mail_index_record. */
#define INDEX_KEYWORDS_COUNT (3*8)
@@ -77,6 +77,7 @@
uint32_t next_uid;
uint32_t messages_count;
+ uint32_t recent_messages_count;
uint32_t seen_messages_count;
uint32_t deleted_messages_count;
More information about the dovecot-cvs
mailing list