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