dsync-mailbox-tree-sync.c revision 28542ffed61d0b860e0d1f9c837e0eb622df6b51
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainen/* Copyright (c) 2013 Dovecot authors, see the included COPYING file */
8ae72ad7d0c69e972cfa65d1e2ce4e3e9a8b765cTimo Sirainen#define TEMP_SUFFIX_MAX_LEN (sizeof("temp-")-1 + 8)
48acc31adebfdd4e4945ee76e1f5259e4b1b6fffTimo Sirainen struct dsync_mailbox_tree *local_tree, *remote_tree;
48acc31adebfdd4e4945ee76e1f5259e4b1b6fffTimo Sirainen ARRAY(struct dsync_mailbox_tree_sync_change) changes;
48acc31adebfdd4e4945ee76e1f5259e4b1b6fffTimo Sirainendsync_mailbox_tree_bfs_iter_init(struct dsync_mailbox_tree *tree)
48acc31adebfdd4e4945ee76e1f5259e4b1b6fffTimo Sirainen iter = i_new(struct dsync_mailbox_tree_bfs_iter, 1);
48acc31adebfdd4e4945ee76e1f5259e4b1b6fffTimo Sirainen iter->queue = aqueue_init(&iter->queue_arr.arr);
return FALSE;
return TRUE;
const char *name;
unsigned int i, count;
if (count == 0)
const char *name;
bool ignore_deletes)
if (!ignore_deletes) {
return FALSE;
struct dsync_mailbox_node **p;
*p = node;
static struct dsync_mailbox_node *
return ret;
static struct dsync_mailbox_node *
return node;
static struct dsync_mailbox_node *
const char *parent_name;
return TRUE;
return FALSE;
return TRUE;
return TRUE;
return FALSE;
return TRUE;
return TRUE;
return FALSE;
int ret;
if (ret != 0)
return ret;
if (ret != 0)
return ret;
int ret;
return ret;
return ts;
(local_node1/remote_node2) parent. */
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return TRUE;
return FALSE;
return FALSE;
return FALSE;
static struct dsync_mailbox_node *
return other_node;
guid_p);
return NULL;
return FALSE;
bool changed;
return TRUE;
remote_node)) {
T_BEGIN {
} T_END;
if (changed)
return TRUE;
T_BEGIN {
} T_END;
if (changed)
return TRUE;
return FALSE;
return TRUE;
return TRUE;
return FALSE;
char *data;
i_unreached();
i_unreached();
const char *p, *new_suffix;
unsigned int max_prefix_len;
T_BEGIN {
} T_END;
return TRUE;
return FALSE;
return TRUE;
return TRUE;
return TRUE;
int ret;
if (ret < 0) {
} else if (ret > 0) {
const char *name;
int ret;
if (ret < 0) {
if (ret > 0) {
struct dsync_mailbox_tree_sync_ctx *
bool ignore_deletes;
a) shouldn't exist, b) doesn't have a matching GUID/UIDVALIDITY,
return ctx;
const struct dsync_mailbox_tree_sync_change *
return NULL;