changeset 12303:507d4c4859cf

doveadm: Call mail command's init() only after service storage is initialized.
author Timo Sirainen <tss@iki.fi>
date Mon, 18 Oct 2010 18:30:02 +0100
parents 27289650ed4c
children 6c2d5ed0b664
files src/doveadm/client-connection.c src/doveadm/doveadm-mail.c src/doveadm/doveadm-mail.h
diffstat 3 files changed, 8 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/client-connection.c	Mon Oct 18 18:09:56 2010 +0100
+++ b/src/doveadm/client-connection.c	Mon Oct 18 18:30:02 2010 +0100
@@ -87,8 +87,7 @@
 		doveadm_print_sticky("username", username);
 	}
 
-	ctx->v.init(ctx, (const void *)argv);
-	doveadm_mail_single_user(ctx, username, service_flags);
+	doveadm_mail_single_user(ctx, argv, username, service_flags);
 	ctx->v.deinit(ctx);
 	doveadm_print_flush();
 	return !ctx->failed;
--- a/src/doveadm/doveadm-mail.c	Mon Oct 18 18:09:56 2010 +0100
+++ b/src/doveadm/doveadm-mail.c	Mon Oct 18 18:30:02 2010 +0100
@@ -226,7 +226,7 @@
 }
 
 void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
-			      const char *username,
+			      char *argv[], const char *username,
 			      enum mail_storage_service_flags service_flags)
 {
 	struct mail_storage_service_input input;
@@ -241,6 +241,7 @@
 
 	ctx->storage_service = mail_storage_service_init(master_service, NULL,
 							 service_flags);
+	ctx->v.init(ctx, (const void *)argv);
 	if (hook_doveadm_mail_init != NULL)
 		hook_doveadm_mail_init(ctx);
 
@@ -258,7 +259,7 @@
 }
 
 static void
-doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx,
+doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx, char *argv[],
 		       const char *wildcard_user,
 		       enum mail_storage_service_flags service_flags)
 {
@@ -277,6 +278,7 @@
         lib_signals_set_handler(SIGINT, FALSE, sig_die, NULL);
 	lib_signals_set_handler(SIGTERM, FALSE, sig_die, NULL);
 
+	ctx->v.init(ctx, (const void *)argv);
 	if (hook_doveadm_mail_init != NULL)
 		hook_doveadm_mail_init(ctx);
 
@@ -410,13 +412,11 @@
 				     DOVEADM_PRINT_HEADER_FLAG_HIDE_TITLE);
 	}
 
-	ctx->v.init(ctx, (const void *)argv);
-
 	if (ctx->iterate_single_user) {
-		doveadm_mail_single_user(ctx, username, service_flags);
+		doveadm_mail_single_user(ctx, argv, username, service_flags);
 	} else {
 		service_flags |= MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP;
-		doveadm_mail_all_users(ctx, wildcard_user, service_flags);
+		doveadm_mail_all_users(ctx, argv, wildcard_user, service_flags);
 	}
 	ctx->v.deinit(ctx);
 	doveadm_print_flush();
--- a/src/doveadm/doveadm-mail.h	Mon Oct 18 18:09:56 2010 +0100
+++ b/src/doveadm/doveadm-mail.h	Mon Oct 18 18:30:02 2010 +0100
@@ -82,7 +82,7 @@
 struct doveadm_mail_cmd_context *
 doveadm_mail_cmd_init(const struct doveadm_mail_cmd *cmd);
 void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
-			      const char *username,
+			      char *argv[], const char *username,
 			      enum mail_storage_service_flags service_flags);
 int doveadm_mail_server_user(struct doveadm_mail_cmd_context *ctx,
 			     struct mail_storage_service_user *user);