]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Create X-Keywords header if possible.
authorTimo Sirainen <tss@iki.fi>
Thu, 17 Jun 2004 21:55:02 +0000 (00:55 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 17 Jun 2004 21:55:02 +0000 (00:55 +0300)
--HG--
branch : HEAD

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

index c49c5ea19827f12f85783355c7519756704fa873..6fe1846c62942ab0b8204faf2eca5eb849a476f6 100644 (file)
@@ -58,11 +58,23 @@ static void mbox_sync_headers_add_space(struct mbox_sync_mail_context *ctx,
 
        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 @@ static void mbox_sync_headers_remove_space(struct mbox_sync_mail_context *ctx,
                                                      &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)