dovecot-2.2: imap: Updated MOVE implementation.

dovecot at dovecot.org dovecot at dovecot.org
Mon Jul 16 20:42:02 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/76fe255ba921
changeset: 14713:76fe255ba921
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Jul 16 20:41:51 2012 +0300
description:
imap: Updated MOVE implementation.

diffstat:

 src/imap/cmd-copy.c      |  19 ++++++++++++++-----
 src/imap/imap-commands.c |   3 ++-
 src/imap/imap-commands.h |   2 +-
 3 files changed, 17 insertions(+), 7 deletions(-)

diffs (68 lines):

diff -r 744a1037ce86 -r 76fe255ba921 src/imap/cmd-copy.c
--- a/src/imap/cmd-copy.c	Mon Jul 16 18:24:53 2012 +0300
+++ b/src/imap/cmd-copy.c	Mon Jul 16 20:41:51 2012 +0300
@@ -137,16 +137,25 @@
 		str_append(msg, move ? "OK Move completed." :
 			   "OK Copy completed.");
 		pool_unref(&changes.pool);
+	} else if (move) {
+		i_assert(copy_count == seq_range_count(&changes.saved_uids));
+
+		str_printfa(msg, "* OK [COPYUID %u %s",
+			    changes.uid_validity, src_uidset);
+		imap_write_seq_range(msg, &changes.saved_uids);
+		str_append(msg, "] Moved UIDs.");
+		client_send_line(client, str_c(msg));
+
+		str_truncate(msg, 0);
+		str_append(msg, "OK Move completed.");
+		pool_unref(&changes.pool);
 	} else {
 		i_assert(copy_count == seq_range_count(&changes.saved_uids));
 
 		str_printfa(msg, "OK [COPYUID %u %s ", changes.uid_validity,
 			    src_uidset);
 		imap_write_seq_range(msg, &changes.saved_uids);
-		if (move)
-			str_append(msg, "] Move completed.");
-		else
-			str_append(msg, "] Copy completed.");
+		str_append(msg, "] Copy completed.");
 		pool_unref(&changes.pool);
 	}
 
@@ -183,7 +192,7 @@
 	return cmd_copy_full(cmd, FALSE);
 }
 
-bool cmd_uid_move(struct client_command_context *cmd)
+bool cmd_move(struct client_command_context *cmd)
 {
 	return cmd_copy_full(cmd, TRUE);
 }
diff -r 744a1037ce86 -r 76fe255ba921 src/imap/imap-commands.c
--- a/src/imap/imap-commands.c	Mon Jul 16 18:24:53 2012 +0300
+++ b/src/imap/imap-commands.c	Mon Jul 16 20:41:51 2012 +0300
@@ -56,8 +56,9 @@
 	{ "SORT",		cmd_sort,        COMMAND_FLAG_USES_SEQS },
 	{ "THREAD",		cmd_thread,      COMMAND_FLAG_USES_SEQS },
 	{ "UID EXPUNGE",	cmd_uid_expunge, COMMAND_FLAG_BREAKS_SEQS },
-	{ "UID MOVE",		cmd_uid_move,    COMMAND_FLAG_USES_SEQS |
+	{ "MOVE",		cmd_move,        COMMAND_FLAG_USES_SEQS |
 						 COMMAND_FLAG_BREAKS_SEQS },
+	{ "UID MOVE",		cmd_move,        COMMAND_FLAG_BREAKS_SEQS },
 	{ "UID SORT",		cmd_sort,        COMMAND_FLAG_BREAKS_SEQS },
 	{ "UID THREAD",		cmd_thread,      COMMAND_FLAG_BREAKS_SEQS },
 	{ "UNSELECT",		cmd_unselect,    COMMAND_FLAG_BREAKS_MAILBOX },
diff -r 744a1037ce86 -r 76fe255ba921 src/imap/imap-commands.h
--- a/src/imap/imap-commands.h	Mon Jul 16 18:24:53 2012 +0300
+++ b/src/imap/imap-commands.h	Mon Jul 16 20:41:51 2012 +0300
@@ -110,7 +110,7 @@
 bool cmd_sort(struct client_command_context *cmd);
 bool cmd_thread(struct client_command_context *cmd);
 bool cmd_uid_expunge(struct client_command_context *cmd);
-bool cmd_uid_move(struct client_command_context *cmd);
+bool cmd_move(struct client_command_context *cmd);
 bool cmd_unselect(struct client_command_context *cmd);
 bool cmd_x_cancel(struct client_command_context *cmd);
 


More information about the dovecot-cvs mailing list