[dovecot-cvs] dovecot/src/lib-storage/index/mbox mbox-sync-rewrite.c, 1.15, 1.16

cras at procontrol.fi cras at procontrol.fi
Fri Jun 18 00:55:04 EEST 2004


Update of /home/cvs/dovecot/src/lib-storage/index/mbox
In directory talvi:/tmp/cvs-serv24632/lib-storage/index/mbox

Modified Files:
	mbox-sync-rewrite.c 
Log Message:
Create X-Keywords header if possible.



Index: mbox-sync-rewrite.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- mbox-sync-rewrite.c	17 Jun 2004 21:29:20 -0000	1.15
+++ mbox-sync-rewrite.c	17 Jun 2004 21:55:02 -0000	1.16
@@ -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)



More information about the dovecot-cvs mailing list