changeset 11609:407e7ff098ca HEAD

doveadm: Mail commands assert-crashed when using -u wildcards.
author Timo Sirainen <tss@iki.fi>
date Mon, 21 Jun 2010 21:55:24 +0100
parents d78370005268
children 280fe153a7ba
files src/doveadm/doveadm-mail.c
diffstat 1 files changed, 9 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail.c	Mon Jun 21 21:52:01 2010 +0100
+++ b/src/doveadm/doveadm-mail.c	Mon Jun 21 21:55:24 2010 +0100
@@ -339,6 +339,7 @@
 		MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT;
 	struct doveadm_mail_cmd_context *ctx;
 	const char *getopt_args, *username, *wildcard_user;
+	bool iter_single_user;
 	int c;
 
 	if (doveadm_debug)
@@ -361,11 +362,6 @@
 		switch (c) {
 		case 'A':
 			ctx->iterate_all_users = TRUE;
-			if (doveadm_print_is_initialized()) {
-				doveadm_print_header("username", "Username",
-					DOVEADM_PRINT_HEADER_FLAG_STICKY |
-					DOVEADM_PRINT_HEADER_FLAG_HIDE_TITLE);
-			}
 			break;
 		case 'u':
 			service_flags |=
@@ -382,15 +378,21 @@
 		}
 	}
 	argv += optind;
-
 	if (argv[0] != NULL && cmd->usage_args == NULL) {
 		i_fatal("doveadm %s: Unknown parameter: %s",
 			cmd->name, argv[0]);
 	}
 
+	iter_single_user = !ctx->iterate_all_users && wildcard_user == NULL;
+	if (doveadm_print_is_initialized() && !iter_single_user) {
+		doveadm_print_header("username", "Username",
+				     DOVEADM_PRINT_HEADER_FLAG_STICKY |
+				     DOVEADM_PRINT_HEADER_FLAG_HIDE_TITLE);
+	}
+
 	ctx->v.init(ctx, (const void *)argv);
 
-	if (!ctx->iterate_all_users && wildcard_user == NULL) {
+	if (iter_single_user) {
 		doveadm_mail_single_user(ctx, username, service_flags);
 	} else {
 		service_flags |= MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP;