[dovecot-cvs] dovecot/src/lib-storage/index/mbox mbox-sync-parse.c,
1.15, 1.16 mbox-sync-private.h, 1.19, 1.20 mbox-sync.c, 1.51, 1.52
cras at procontrol.fi
cras at procontrol.fi
Wed Jun 23 21:33:24 EEST 2004
- Previous message: [dovecot-cvs] dovecot/src/lib-storage/index index-mail.c, 1.35,
1.36 index-mail.h, 1.12, 1.13
- Next message: [dovecot-cvs] dovecot/src/pop3 client.c, 1.26, 1.27 client.h, 1.4,
1.5 commands.c, 1.16, 1.17
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-storage/index/mbox
In directory talvi:/tmp/cvs-serv6214/lib-storage/index/mbox
Modified Files:
mbox-sync-parse.c mbox-sync-private.h mbox-sync.c
Log Message:
Added a framework for getting POP3 UIDL strings from mail-storage. The
default still is uidvalidity.uid. Added beginnings of overriding it from
X-UIDL header in mbox.
Index: mbox-sync-parse.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- mbox-sync-parse.c 20 Jun 2004 13:48:34 -0000 1.15
+++ mbox-sync-parse.c 23 Jun 2004 18:33:22 -0000 1.16
@@ -223,6 +223,21 @@
return TRUE;
}
+static int parse_x_uidl(struct mbox_sync_mail_context *ctx,
+ struct message_header_line *hdr)
+{
+ size_t i;
+
+ for (i = 0; i < hdr->full_value_len; i++) {
+ if (IS_LWSP_LF(hdr->full_value[i]))
+ break;
+ }
+
+ str_truncate(ctx->uidl, 0);
+ str_append_n(ctx->uidl, hdr->full_value, i);
+ return TRUE;
+}
+
static int parse_content_length(struct mbox_sync_mail_context *ctx,
struct message_header_line *hdr)
{
@@ -259,6 +274,7 @@
{ "X-Keywords", parse_x_keywords },
{ "X-Status", parse_x_status },
{ "X-UID", parse_x_uid },
+ { "X-UIDL", parse_x_uidl },
{ NULL, NULL }
};
Index: mbox-sync-private.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-private.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- mbox-sync-private.h 20 Jun 2004 13:48:34 -0000 1.19
+++ mbox-sync-private.h 23 Jun 2004 18:33:22 -0000 1.20
@@ -54,7 +54,7 @@
uoff_t from_offset, hdr_offset, body_offset;
size_t header_first_change, header_last_change;
- string_t *header;
+ string_t *header, *uidl;
uoff_t content_length;
@@ -80,7 +80,7 @@
struct mail_index_transaction *t;
const struct mail_index_header *hdr;
- string_t *header, *from_line;
+ string_t *header, *uidl, *from_line;
/* header state: */
uint32_t base_uid_validity, base_uid_last;
Index: mbox-sync.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- mbox-sync.c 23 Jun 2004 03:31:52 -0000 1.51
+++ mbox-sync.c 23 Jun 2004 18:33:22 -0000 1.52
@@ -198,6 +198,8 @@
mail_ctx->sync_ctx = sync_ctx;
mail_ctx->seq = ++sync_ctx->seq;
mail_ctx->header = sync_ctx->header;
+ mail_ctx->uidl = sync_ctx->uidl;
+ str_truncate(mail_ctx->uidl, 0);
mail_ctx->from_offset =
istream_raw_mbox_get_start_offset(sync_ctx->input);
@@ -403,9 +405,10 @@
}
static int mbox_sync_update_index(struct mbox_sync_context *sync_ctx,
- struct mbox_sync_mail *mail,
+ struct mbox_sync_mail_context *mail_ctx,
const struct mail_index_record *rec)
{
+ struct mbox_sync_mail *mail = &mail_ctx->mail;
keywords_mask_t idx_keywords;
uint8_t idx_flags, mbox_flags;
@@ -416,6 +419,12 @@
mail_index_update_flags(sync_ctx->t, sync_ctx->idx_seq,
MODIFY_REPLACE, mbox_flags,
mail->keywords);
+ if (str_len(mail_ctx->uidl) > 0) {
+ /*FIXME:mail_cache_add(sync_ctx->cache_trans,
+ MAIL_CACHE_UID_STRING,
+ str_data(mail_ctx->uidl),
+ str_len(mail_ctx->uidl));*/
+ }
} else {
/* see if flags changed */
idx_flags = rec->flags;
@@ -785,7 +794,7 @@
}
if (!expunged && !mail_ctx->pseudo) {
- if (mbox_sync_update_index(sync_ctx, &mail_ctx->mail,
+ if (mbox_sync_update_index(sync_ctx, mail_ctx,
rec) < 0)
return -1;
}
@@ -1129,6 +1138,7 @@
sync_ctx.ibox = ibox;
sync_ctx.from_line = str_new(default_pool, 256);
sync_ctx.header = str_new(default_pool, 4096);
+ sync_ctx.uidl = str_new(default_pool, 128);
sync_ctx.lock_id = lock_id;
sync_ctx.index_sync_ctx = index_sync_ctx;
@@ -1227,6 +1237,7 @@
ret = -1;
}
+ str_free(sync_ctx.uidl);
str_free(sync_ctx.header);
str_free(sync_ctx.from_line);
buffer_free(sync_ctx.mails);
- Previous message: [dovecot-cvs] dovecot/src/lib-storage/index index-mail.c, 1.35,
1.36 index-mail.h, 1.12, 1.13
- Next message: [dovecot-cvs] dovecot/src/pop3 client.c, 1.26, 1.27 client.h, 1.4,
1.5 commands.c, 1.16, 1.17
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list