doveadm-mailbox-list-iter.c revision 5fbccc935e3f7b916aa7c6e302a212821072e83a
/* Copyright (c) 2010-2012 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "array.h"
#include "str.h"
#include "mail-search.h"
#include "mail-namespace.h"
#include "mailbox-list.h"
#include "doveadm-mail.h"
#include "doveadm-mailbox-list-iter.h"
struct doveadm_mailbox_list_iter {
struct doveadm_mail_cmd_context *ctx;
struct mail_search_args *search_args;
struct mailbox_list_iterate_context *iter;
bool only_selectable;
};
static int
bool *have_guid_r)
{
const struct mail_search_arg *subargs;
case SEARCH_OR:
/* we don't currently try to optimize OR. */
break;
case SEARCH_SUB:
case SEARCH_INTHREAD:
return 0;
}
break;
case SEARCH_MAILBOX:
case SEARCH_MAILBOX_GLOB:
return 0;
}
break;
case SEARCH_MAILBOX_GUID:
*have_guid_r = TRUE;
break;
default:
break;
}
}
return 1;
}
static struct doveadm_mailbox_list_iter *
struct mail_search_args *search_args,
enum namespace_type ns_mask)
{
static const char *all_pattern = "*";
struct doveadm_mailbox_list_iter *iter;
&have_guid);
if (array_count(&patterns) == 0) {
if (have_guid)
} else {
}
(void)array_append_space(&patterns);
return iter;
}
struct doveadm_mailbox_list_iter *
struct mail_search_args *search_args,
{
}
struct doveadm_mailbox_list_iter *
struct mail_search_args *search_args,
{
enum namespace_type ns_mask =
struct doveadm_mailbox_list_iter *iter;
return iter;
}
{
int ret;
i_error("Listing mailboxes failed");
}
return ret;
}
const struct mailbox_info *
{
const struct mailbox_info *info;
MAILBOX_NONEXISTENT)) != 0) {
if (iter->only_selectable)
continue;
}
break;
}
return info;
}