[dovecot-cvs] dovecot/src/lib-storage/index/maildir maildir-copy.c, 1.39, 1.40 maildir-storage.h, 1.41, 1.42

cras at dovecot.org cras at dovecot.org
Fri Oct 7 12:34:14 EEST 2005


Update of /var/lib/cvs/dovecot/src/lib-storage/index/maildir
In directory talvi:/tmp/cvs-serv4310/lib-storage/index/maildir

Modified Files:
	maildir-copy.c maildir-storage.h 
Log Message:
Added flags and keywords parameters to mailbox_copy() in case they're wanted
to be changed while copying.



Index: maildir-copy.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/maildir/maildir-copy.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- maildir-copy.c	18 Aug 2005 17:00:46 -0000	1.39
+++ maildir-copy.c	7 Oct 2005 09:34:12 -0000	1.40
@@ -55,31 +55,28 @@
 	return 1;
 }
 
-static int maildir_copy_hardlink(struct mail *mail,
-				 struct maildir_copy_context *ctx)
+static int
+maildir_copy_hardlink(struct mail *mail,
+		      enum mail_flags flags, struct mail_keywords *keywords,
+		      struct maildir_copy_context *ctx)
 {
 	struct index_mail *imail = (struct index_mail *)mail;
 	struct maildir_mailbox *mbox = (struct maildir_mailbox *)imail->ibox;
 	struct hardlink_ctx do_ctx;
 	struct rollback *rb;
-	enum mail_flags flags;
-	const char *const *keywords;
 	const char *dest_fname;
-	array_t ARRAY_DEFINE(keywords_arr, const char *);
-	unsigned int count;
+	array_t ARRAY_DEFINE(keywords_arr, unsigned int);
 
-        flags = mail_get_flags(mail);
-        keywords = mail_get_keywords(mail);
 	dest_fname = maildir_generate_tmp_filename(&ioloop_timeval);
 
-	count = strarray_length(keywords);
-	if (count > 0) {
+	if (keywords->count > 0) {
 		ARRAY_CREATE(&keywords_arr, pool_datastack_create(),
-			     const char *, count);
-		array_append(&keywords_arr, keywords, count);
+			     unsigned int, keywords->count);
+		array_append(&keywords_arr, keywords->idx, keywords->count);
 	}
 	dest_fname = maildir_filename_set_flags(NULL, // FIXME: !!!
-						dest_fname, flags, count != 0 ?
+						dest_fname, flags,
+						keywords->count != 0 ?
 						&keywords_arr : NULL);
 
 	memset(&do_ctx, 0, sizeof(do_ctx));
@@ -137,6 +134,7 @@
 }
 
 int maildir_copy(struct mailbox_transaction_context *_t, struct mail *mail,
+		 enum mail_flags flags, struct mail_keywords *keywords,
 		 struct mail *dest_mail)
 {
 	struct maildir_transaction_context *t =
@@ -153,7 +151,7 @@
 	    mail->box->storage == STORAGE(ctx->mbox->storage)) {
 		// FIXME: handle dest_mail
 		t_push();
-		ret = maildir_copy_hardlink(mail, ctx);
+		ret = maildir_copy_hardlink(mail, flags, keywords, ctx);
 		t_pop();
 
 		if (ret > 0)
@@ -164,5 +162,5 @@
 		/* non-fatal hardlinking failure, try the slow way */
 	}
 
-	return mail_storage_copy(_t, mail, dest_mail);
+	return mail_storage_copy(_t, mail, flags, keywords, dest_mail);
 }

Index: maildir-storage.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/maildir/maildir-storage.h,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- maildir-storage.h	12 Jul 2005 12:45:06 -0000	1.41
+++ maildir-storage.h	7 Oct 2005 09:34:12 -0000	1.42
@@ -126,6 +126,7 @@
 void maildir_transaction_save_rollback(struct maildir_save_context *ctx);
 
 int maildir_copy(struct mailbox_transaction_context *t, struct mail *mail,
+		 enum mail_flags flags, struct mail_keywords *keywords,
 		 struct mail *dest_mail);
 int maildir_transaction_copy_commit(struct maildir_copy_context *ctx);
 void maildir_transaction_copy_rollback(struct maildir_copy_context *ctx);



More information about the dovecot-cvs mailing list