cmd-copy.c revision 63f36c2b47217fc2dc4ed49cfc1907311d5ed366
/* Copyright (c) 2002-2007 Dovecot authors, see the included COPYING file */
#include "common.h"
#include "str.h"
#include "ostream.h"
#include "commands.h"
#include "imap-search.h"
#include <time.h>
#define COPY_CHECK_INTERVAL 100
{
return;
}
}
struct mailbox_transaction_context *t,
struct mail_search_arg *search_args,
const char **src_uidset_r,
unsigned int *copy_count_r)
{
struct mail_search_context *search_ctx;
struct mailbox_transaction_context *src_trans;
struct mail_keywords *keywords;
const char *const *keywords_list;
unsigned int copy_count = 0;
struct msgset_generator_context srcset_ctx;
int ret;
ret = 1;
ret = 0;
break;
}
if ((++copy_count % COPY_CHECK_INTERVAL) == 0)
}
if (mailbox_search_deinit(&search_ctx) < 0)
ret = -1;
if (mailbox_transaction_commit(&src_trans) < 0)
ret = -1;
return ret;
}
{
struct mail_storage *storage;
struct mailbox_transaction_context *t;
struct mail_search_arg *search_arg;
enum mailbox_sync_flags sync_flags = 0;
enum imap_sync_flags imap_flags = 0;
unsigned int copy_count;
int ret;
/* <message set> <mailbox> */
return FALSE;
if (!client_verify_open_mailbox(cmd))
return TRUE;
/* open the destination mailbox */
return TRUE;
if (search_arg == NULL)
return TRUE;
return TRUE;
else {
return TRUE;
}
}
&src_uidset, ©_count);
if (ret <= 0)
else if (mailbox_transaction_commit_get_uids(&t, &uid_validity,
ret = -1;
else if (copy_count == 0)
msg = "OK No messages copied.";
else {
"Copy completed.",
} else {
"Copy completed.",
}
}
}
if (ret > 0)
else if (ret == 0) {
/* some messages were expunged, sync them */
"NO Some of the requested messages no longer exist.");
} else {
return TRUE;
}
}