From: Timo Sirainen Date: Wed, 28 Apr 2010 19:08:03 +0000 (+0300) Subject: doveadm: Added list command for listing users' mailboxes. X-Git-Tag: 2.0.beta5~71 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2649ea100281f64252f676202d8e3e575791d9a2;p=thirdparty%2Fdovecot%2Fcore.git doveadm: Added list command for listing users' mailboxes. --HG-- branch : HEAD --- diff --git a/src/doveadm/Makefile.am b/src/doveadm/Makefile.am index 58c634f368..1ae592d579 100644 --- a/src/doveadm/Makefile.am +++ b/src/doveadm/Makefile.am @@ -54,6 +54,7 @@ doveadm_SOURCES = \ doveadm-mail.c \ doveadm-mail-altmove.c \ doveadm-mail-fetch.c \ + doveadm-mail-list.c \ doveadm-mail-list-iter.c \ doveadm-penalty.c \ doveadm-pw.c \ diff --git a/src/doveadm/doveadm-mail-list.c b/src/doveadm/doveadm-mail-list.c new file mode 100644 index 0000000000..05f3484ee3 --- /dev/null +++ b/src/doveadm/doveadm-mail-list.c @@ -0,0 +1,42 @@ +/* Copyright (c) 2010 Dovecot authors, see the included COPYING file */ + +#include "lib.h" +#include "mail-storage.h" +#include "mail-search-build.h" +#include "doveadm-mail-list-iter.h" +#include "doveadm-mail.h" + +#include + +void cmd_list(struct mail_user *user, const char *const args[]) +{ + const enum mailbox_list_iter_flags iter_flags = + MAILBOX_LIST_ITER_RAW_LIST | + MAILBOX_LIST_ITER_VIRTUAL_NAMES | + MAILBOX_LIST_ITER_NO_AUTO_INBOX | + MAILBOX_LIST_ITER_RETURN_NO_FLAGS; + struct mail_search_args *search_args; + struct mail_search_arg *arg; + struct doveadm_mail_list_iter *iter; + const struct mailbox_info *info; + unsigned int i; + + search_args = mail_search_build_init(); + for (i = 0; args[i] != NULL; i++) { + arg = mail_search_build_add(search_args, SEARCH_MAILBOX_GLOB); + arg->value.str = p_strdup(search_args->pool, args[i]); + } + if (i > 1) { + struct mail_search_arg *subargs = search_args->args; + + search_args->args = NULL; + arg = mail_search_build_add(search_args, SEARCH_OR); + arg->value.subargs = subargs; + } + + iter = doveadm_mail_list_iter_init(user, search_args, iter_flags); + while ((info = doveadm_mail_list_iter_next(iter)) != NULL) { + printf("%s\n", info->name); + } + doveadm_mail_list_iter_deinit(&iter); +} diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index f0214e3f14..dcc8df9888 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -313,7 +313,8 @@ static struct doveadm_mail_cmd mail_commands[] = { { cmd_purge, "purge", NULL }, { cmd_force_resync, "force-resync", "" }, { cmd_fetch, "fetch", " " }, - { cmd_altmove, "altmove", "" } + { cmd_altmove, "altmove", "" }, + { cmd_list, "list", "[ [...]]" } }; void doveadm_mail_init(void) diff --git a/src/doveadm/doveadm-mail.h b/src/doveadm/doveadm-mail.h index db58b810f0..4af0a24ccb 100644 --- a/src/doveadm/doveadm-mail.h +++ b/src/doveadm/doveadm-mail.h @@ -32,5 +32,6 @@ doveadm_mailbox_find_and_sync(struct mail_user *user, const char *mailbox); void cmd_fetch(struct mail_user *user, const char *const args[]); void cmd_altmove(struct mail_user *user, const char *const args[]); +void cmd_list(struct mail_user *user, const char *const args[]); #endif