diff src/doveadm/doveadm-mail-fetch.c @ 11395:07c9d1115029 HEAD

doveadm: mail commands can now be extended more easily by plugins. Also plugins can now override the list of -A users.
author Timo Sirainen <tss@iki.fi>
date Thu, 27 May 2010 19:59:39 +0100
parents b43d6d2ef2fb
children 93eaae8617c8
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail-fetch.c	Thu May 27 19:27:18 2010 +0100
+++ b/src/doveadm/doveadm-mail-fetch.c	Thu May 27 19:59:39 2010 +0100
@@ -20,7 +20,6 @@
 struct fetch_cmd_context {
 	struct doveadm_mail_cmd_context ctx;
 
-	struct mail_search_args *search_args;
 	struct ostream *output;
 	struct mail *mail;
 
@@ -383,7 +382,8 @@
 	struct mail *mail;
 	struct mailbox_header_lookup_ctx *headers = NULL;
 
-	if (doveadm_mail_iter_init(info, ctx->search_args, &trans, &iter) < 0)
+	if (doveadm_mail_iter_init(info, ctx->ctx.search_args,
+				   &trans, &iter) < 0)
 		return -1;
 
 	if (array_count(&ctx->header_fields) > 1) {
@@ -445,7 +445,7 @@
 	struct doveadm_mail_list_iter *iter;
 	const struct mailbox_info *info;
 
-	iter = doveadm_mail_list_iter_init(user, ctx->search_args, iter_flags);
+	iter = doveadm_mail_list_iter_init(user, _ctx->search_args, iter_flags);
 	while ((info = doveadm_mail_list_iter_next(iter)) != NULL) T_BEGIN {
 		(void)cmd_fetch_box(ctx, info);
 	} T_END;
@@ -471,11 +471,11 @@
 		doveadm_mail_help_name("fetch");
 
 	parse_fetch_fields(ctx, fetch_fields);
-	ctx->search_args = doveadm_mail_build_search_args(args + 1);
+	_ctx->search_args = doveadm_mail_build_search_args(args + 1);
 
 	ctx->output = o_stream_create_fd(STDOUT_FILENO, 0, FALSE);
 	ctx->hdr = str_new(default_pool, 512);
-	if (search_args_have_unique_fetch(ctx->search_args))
+	if (search_args_have_unique_fetch(_ctx->search_args))
 		ctx->prefix = "";
 	else {
 		random_fill_weak(prefix_buf, sizeof(prefix_buf));
@@ -492,9 +492,9 @@
 	struct fetch_cmd_context *ctx;
 
 	ctx = doveadm_mail_cmd_alloc(struct fetch_cmd_context);
-	ctx->ctx.init = cmd_fetch_init;
-	ctx->ctx.run = cmd_fetch_run;
-	ctx->ctx.deinit = cmd_fetch_deinit;
+	ctx->ctx.v.init = cmd_fetch_init;
+	ctx->ctx.v.run = cmd_fetch_run;
+	ctx->ctx.v.deinit = cmd_fetch_deinit;
 	return &ctx->ctx;
 }