]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Added list command for listing users' mailboxes.
authorTimo Sirainen <tss@iki.fi>
Wed, 28 Apr 2010 19:08:03 +0000 (22:08 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 28 Apr 2010 19:08:03 +0000 (22:08 +0300)
--HG--
branch : HEAD

src/doveadm/Makefile.am
src/doveadm/doveadm-mail-list.c [new file with mode: 0644]
src/doveadm/doveadm-mail.c
src/doveadm/doveadm-mail.h

index 58c634f3689feb2c405fff9b3b9ae5da42d88fd9..1ae592d5790e128d2a3bb344a07bbfc83a08370c 100644 (file)
@@ -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 (file)
index 0000000..05f3484
--- /dev/null
@@ -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 <stdio.h>
+
+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);
+}
index f0214e3f14066af1c4dcf0d26f77d74e5a3db4fb..dcc8df9888b2445730f0fac6fa221552ac31481e 100644 (file)
@@ -313,7 +313,8 @@ static struct doveadm_mail_cmd mail_commands[] = {
        { cmd_purge, "purge", NULL },
        { cmd_force_resync, "force-resync", "<mailbox>" },
        { cmd_fetch, "fetch", "<mailbox> <search query>" },
-       { cmd_altmove, "altmove", "<search query>" }
+       { cmd_altmove, "altmove", "<search query>" },
+       { cmd_list, "list", "[<mailbox> [...]]" }
 };
 
 void doveadm_mail_init(void)
index db58b810f09687e96b49cc97e33dc925e0dc6b2d..4af0a24ccbd006681d1bdffbe4ecfe22303b3d1f 100644 (file)
@@ -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