]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm mailbox delete -r: Delete all mailboxes when empty mailbox name is given.
authorTimo Sirainen <tss@iki.fi>
Fri, 12 Jun 2015 12:14:52 +0000 (15:14 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 12 Jun 2015 12:14:52 +0000 (15:14 +0300)
src/doveadm/doveadm-mail-mailbox.c

index 6b4ef2b41b28a00b4a581d65d39e1b7c0e1d83e8..5930a9d70a4bd7566b7621372eae85c4bebad973 100644 (file)
@@ -306,7 +306,8 @@ get_child_mailboxes(struct mail_user *user, ARRAY_TYPE(const_string) *mailboxes,
        const char *pattern, *child_name;
 
        ns = mail_namespace_find(user->namespaces, name);
-       pattern = t_strdup_printf("%s%c*", name, mail_namespace_get_sep(ns));
+       pattern = name[0] == '\0' ? "*" :
+               t_strdup_printf("%s%c*", name, mail_namespace_get_sep(ns));
        iter = mailbox_list_iter_init(ns->list, pattern,
                                      MAILBOX_LIST_ITER_RETURN_NO_FLAGS);
        while ((info = mailbox_list_iter_next(iter)) != NULL) {
@@ -337,7 +338,8 @@ cmd_mailbox_delete_run(struct doveadm_mail_cmd_context *_ctx,
                                doveadm_mail_failed_error(_ctx, MAIL_ERROR_TEMP);
                                ret = -1;
                        }
-                       array_append(&recursive_mailboxes, namep, 1);
+                       if ((*namep)[0] != '\0')
+                               array_append(&recursive_mailboxes, namep, 1);
                }
                array_sort(&recursive_mailboxes, i_strcmp_reverse_p);
                mailboxes = &recursive_mailboxes;