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)