dovecot-2.0: doveadm: Added list command for listing users' mail...

dovecot at dovecot.org dovecot at dovecot.org
Wed Apr 28 22:09:22 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/f99720c01ba2
changeset: 11203:f99720c01ba2
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Apr 28 22:08:03 2010 +0300
description:
doveadm: Added list command for listing users' mailboxes.

diffstat:

 src/doveadm/Makefile.am         |   1 +
 src/doveadm/doveadm-mail-list.c |  42 ++++++++++++++++++++++++++++++++++++++++++
 src/doveadm/doveadm-mail.c      |   3 ++-
 src/doveadm/doveadm-mail.h      |   1 +
 4 files changed, 46 insertions(+), 1 deletions(-)

diffs (80 lines):

diff -r 63dbfb4c2f71 -r f99720c01ba2 src/doveadm/Makefile.am
--- a/src/doveadm/Makefile.am	Wed Apr 28 22:07:15 2010 +0300
+++ b/src/doveadm/Makefile.am	Wed Apr 28 22:08:03 2010 +0300
@@ -54,6 +54,7 @@
 	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 -r 63dbfb4c2f71 -r f99720c01ba2 src/doveadm/doveadm-mail-list.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/doveadm/doveadm-mail-list.c	Wed Apr 28 22:08:03 2010 +0300
@@ -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);
+}
diff -r 63dbfb4c2f71 -r f99720c01ba2 src/doveadm/doveadm-mail.c
--- a/src/doveadm/doveadm-mail.c	Wed Apr 28 22:07:15 2010 +0300
+++ b/src/doveadm/doveadm-mail.c	Wed Apr 28 22:08:03 2010 +0300
@@ -313,7 +313,8 @@
 	{ 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)
diff -r 63dbfb4c2f71 -r f99720c01ba2 src/doveadm/doveadm-mail.h
--- a/src/doveadm/doveadm-mail.h	Wed Apr 28 22:07:15 2010 +0300
+++ b/src/doveadm/doveadm-mail.h	Wed Apr 28 22:08:03 2010 +0300
@@ -32,5 +32,6 @@
 
 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


More information about the dovecot-cvs mailing list