[dovecot-cvs] dovecot/src/lib-storage/index/mbox mbox-sync-parse.c,
1.17, 1.18 mbox-sync-private.h, 1.21, 1.22 mbox-sync-rewrite.c,
1.21, 1.22 mbox-sync-update.c, 1.17, 1.18
cras at procontrol.fi
cras at procontrol.fi
Tue Jun 29 00:32:31 EEST 2004
- Previous message: [dovecot-cvs] dovecot/src/lib-mail message-parser.c,1.54,1.55
- Next message: [dovecot-cvs] dovecot/src/lib-storage/index/mbox
mbox-sync-private.h, 1.22, 1.23 mbox-sync-rewrite.c, 1.22,
1.23 mbox-sync-update.c, 1.18, 1.19 mbox-sync.c, 1.53, 1.54
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-storage/index/mbox
In directory talvi:/tmp/cvs-serv4957/lib-storage/index/mbox
Modified Files:
mbox-sync-parse.c mbox-sync-private.h mbox-sync-rewrite.c
mbox-sync-update.c
Log Message:
Several fixes for updating mbox. Recent changes also made it corrupt
headers.
Index: mbox-sync-parse.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- mbox-sync-parse.c 24 Jun 2004 13:47:35 -0000 1.17
+++ mbox-sync-parse.c 28 Jun 2004 21:32:29 -0000 1.18
@@ -398,9 +398,12 @@
func = header_func_find(hdr->name);
if (func != NULL) {
- if (hdr->continues)
+ if (hdr->continues) {
hdr->use_full_value = TRUE;
- else if (!func->func(ctx, hdr)) {
+ continue;
+ }
+
+ if (!func->func(ctx, hdr)) {
/* this header is broken, remove it */
ctx->need_rewrite = TRUE;
str_truncate(ctx->header, line_start_pos);
Index: mbox-sync-private.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-private.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- mbox-sync-private.h 24 Jun 2004 13:47:35 -0000 1.21
+++ mbox-sync-private.h 28 Jun 2004 21:32:29 -0000 1.22
@@ -120,5 +120,7 @@
int mbox_sync_seek(struct mbox_sync_context *sync_ctx, uoff_t from_offset);
int mbox_move(struct mbox_sync_context *sync_ctx,
uoff_t dest, uoff_t source, uoff_t size);
+void mbox_sync_move_buffer(struct mbox_sync_mail_context *ctx,
+ size_t pos, size_t need, size_t have);
#endif
Index: mbox-sync-rewrite.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- mbox-sync-rewrite.c 20 Jun 2004 13:48:34 -0000 1.21
+++ mbox-sync-rewrite.c 28 Jun 2004 21:32:29 -0000 1.22
@@ -148,7 +148,7 @@
if (data_size - start_pos <= *size) {
/* remove it all */
- str_delete(ctx->header, start_pos, data_size - start_pos);
+ mbox_sync_move_buffer(ctx, start_pos, 0, data_size - start_pos);
*size -= data_size - start_pos;
return;
}
@@ -156,7 +156,7 @@
/* we have more space than needed. since we're removing from
the beginning of header instead of end, we don't have to
worry about multiline-headers. */
- str_delete(ctx->header, start_pos, *size);
+ mbox_sync_move_buffer(ctx, start_pos, 0, *size);
if (last_line_pos <= start_pos + *size)
last_line_pos = start_pos;
else
Index: mbox-sync-update.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- mbox-sync-update.c 20 Jun 2004 13:03:02 -0000 1.17
+++ mbox-sync-update.c 28 Jun 2004 21:32:29 -0000 1.18
@@ -17,8 +17,8 @@
}
}
-static void mbox_sync_move_buffer(struct mbox_sync_mail_context *ctx,
- size_t pos, size_t need, size_t have)
+void mbox_sync_move_buffer(struct mbox_sync_mail_context *ctx,
+ size_t pos, size_t need, size_t have)
{
ssize_t diff = (ssize_t)need - (ssize_t)have;
int i;
@@ -126,8 +126,9 @@
ctx->sync_ctx->hdr->uid_validity;
}
+ str_append(ctx->header, "X-IMAPbase: ");
ctx->hdr_pos[MBOX_HDR_X_IMAPBASE] = str_len(ctx->header);
- str_printfa(ctx->header, "X-IMAPbase: %u %010u",
+ str_printfa(ctx->header, "%u %010u",
ctx->sync_ctx->base_uid_validity,
ctx->sync_ctx->next_uid-1);
//FIXME:keywords_append(ctx, all_keywords);
@@ -135,24 +136,25 @@
}
if (ctx->hdr_pos[MBOX_HDR_X_UID] == (size_t)-1) {
+ str_append(ctx->header, "X-UID: ");
ctx->hdr_pos[MBOX_HDR_X_UID] = str_len(ctx->header);
- str_printfa(ctx->header, "X-UID: %u\n", ctx->mail.uid);
+ str_printfa(ctx->header, "%u\n", ctx->mail.uid);
}
if (ctx->hdr_pos[MBOX_HDR_STATUS] == (size_t)-1 &&
(ctx->mail.flags & STATUS_FLAGS_MASK) != 0) {
if (!ctx->sync_ctx->ibox->keep_recent)
ctx->mail.flags |= MBOX_NONRECENT;
- ctx->hdr_pos[MBOX_HDR_STATUS] = str_len(ctx->header);
str_append(ctx->header, "Status: ");
+ ctx->hdr_pos[MBOX_HDR_STATUS] = str_len(ctx->header);
status_flags_append(ctx, mbox_status_flags);
str_append_c(ctx->header, '\n');
}
if (ctx->hdr_pos[MBOX_HDR_X_STATUS] == (size_t)-1 &&
(ctx->mail.flags & XSTATUS_FLAGS_MASK) != 0) {
- ctx->hdr_pos[MBOX_HDR_X_STATUS] = str_len(ctx->header);
str_append(ctx->header, "X-Status: ");
+ ctx->hdr_pos[MBOX_HDR_X_STATUS] = str_len(ctx->header);
status_flags_append(ctx, mbox_xstatus_flags);
str_append_c(ctx->header, '\n');
}
@@ -166,8 +168,8 @@
}
if (ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] == (size_t)-1 && have_keywords) {
- ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] = str_len(ctx->header);
str_append(ctx->header, "X-Keywords: ");
+ ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] = str_len(ctx->header);
keywords_append(ctx, ctx->mail.keywords);
str_append_c(ctx->header, '\n');
}
- Previous message: [dovecot-cvs] dovecot/src/lib-mail message-parser.c,1.54,1.55
- Next message: [dovecot-cvs] dovecot/src/lib-storage/index/mbox
mbox-sync-private.h, 1.22, 1.23 mbox-sync-rewrite.c, 1.22,
1.23 mbox-sync-update.c, 1.18, 1.19 mbox-sync.c, 1.53, 1.54
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list