]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Mail commands assert-crashed when using -u wildcards.
authorTimo Sirainen <tss@iki.fi>
Mon, 21 Jun 2010 20:55:24 +0000 (21:55 +0100)
committerTimo Sirainen <tss@iki.fi>
Mon, 21 Jun 2010 20:55:24 +0000 (21:55 +0100)
--HG--
branch : HEAD

src/doveadm/doveadm-mail.c

index 49e7a4e16c0bfe55425051d60174d48abd32b30c..48a5e079c4f0bd92d35f19bc6eb7895b1799a680 100644 (file)
@@ -339,6 +339,7 @@ doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[])
                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 @@ doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[])
                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 @@ doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[])
                }
        }
        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;