view src/lib-storage/index/imapc/imapc-list.h @ 19560:5e6afd3b67b6

imapc: Fixed escaping/unescaping mailbox names. This fixes accessing mailbox names with '%' (the escape_char). It also fixes local namespace separator being different from the remote separator.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 14 Jan 2016 18:50:23 +0200
parents d9ebebdb931b
children b651598623f9
line wrap: on
line source

#ifndef IMAPC_LIST_H
#define IMAPC_LIST_H

struct imap_arg;

#include "mailbox-list-private.h"

#define MAILBOX_LIST_NAME_IMAPC "imapc"

struct imapc_mailbox_list {
	struct mailbox_list list;
	const struct imapc_settings *set;
	struct imapc_storage_client *client;
	struct mailbox_list *index_list;

	/* mailboxes are stored as vnames */
	struct mailbox_tree_context *mailboxes, *tmp_subscriptions;
	char root_sep;
	time_t last_refreshed_mailboxes;

	unsigned int iter_count;

	/* mailboxes/subscriptions are fully refreshed only during
	   mailbox list iteration. */
	unsigned int refreshed_subscriptions:1;
	unsigned int refreshed_mailboxes:1;
	/* mailbox list's "recently refreshed" state is reset by syncing a
	   mailbox. mainly we use this to cache mailboxes' existence to avoid
	   issuing a LIST command every time. */
	unsigned int refreshed_mailboxes_recently:1;
	unsigned int index_list_failed:1;
	unsigned int root_sep_pending:1;
};

int imapc_list_get_mailbox_flags(struct mailbox_list *list, const char *name,
				 enum mailbox_info_flags *flags_r);
int imapc_list_try_get_root_sep(struct imapc_mailbox_list *list, char *sep_r);
const char *imapc_list_to_remote(struct imapc_mailbox_list *list, const char *name);

#endif