Mercurial > dovecot > original-hg > dovecot-1.2
diff src/lib-storage/index/mbox/mbox-sync-rewrite.c @ 2153:53288223de6c HEAD
Create X-Keywords header if possible.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 18 Jun 2004 00:55:02 +0300 |
parents | 16287320d080 |
children | 282e993b92c4 |
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-sync-rewrite.c Fri Jun 18 00:52:53 2004 +0300 +++ b/src/lib-storage/index/mbox/mbox-sync-rewrite.c Fri Jun 18 00:55:02 2004 +0300 @@ -58,11 +58,23 @@ i_assert(size < SSIZE_T_MAX); - /* Append at the end of X-Keywords header, - or X-UID if it doesn't exist */ - start_pos = ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] != (size_t)-1 ? - ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] : - ctx->hdr_pos[MBOX_HDR_X_UID]; + if (ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] == (size_t)-1 && + size >= sizeof("X-Keywords: \n")-1) { + /* Add X-Keywords */ + start_pos = str_len(ctx->header); + if (ctx->have_eoh) + start_pos--; + ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] = start_pos; + + str_insert(ctx->header, start_pos, "X-Keywords: \n"); + size -= sizeof("X-Keywords: \n")-1; + } else { + /* Append at the end of X-Keywords header, + or X-UID if it doesn't exist */ + start_pos = ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] != (size_t)-1 ? + ctx->hdr_pos[MBOX_HDR_X_KEYWORDS] : + ctx->hdr_pos[MBOX_HDR_X_UID]; + } data = str_data(ctx->header); data_size = str_len(ctx->header); @@ -168,6 +180,8 @@ &size); } } + + /* FIXME: see if we could remove X-Keywords header completely */ } int mbox_sync_try_rewrite(struct mbox_sync_mail_context *ctx, off_t move_diff)