From: Timo Sirainen Date: Wed, 25 Jun 2003 23:31:03 +0000 (+0300) Subject: When deleting directory, delete .imap dir under it first. X-Git-Tag: 1.1.alpha1~4527 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=526a7f27abe99ce74f25c17d437564ba81c31b37;p=thirdparty%2Fdovecot%2Fcore.git When deleting directory, delete .imap dir under it first. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/mbox/mbox-storage.c b/src/lib-storage/index/mbox/mbox-storage.c index 158fb9526d..735a50e1b9 100644 --- a/src/lib-storage/index/mbox/mbox-storage.c +++ b/src/lib-storage/index/mbox/mbox-storage.c @@ -497,7 +497,20 @@ static int mbox_delete_mailbox(struct mail_storage *storage, const char *name) } if (S_ISDIR(st.st_mode)) { - /* deleting a folder, only allow it if it's empty */ + /* deleting a folder, only allow it if it's empty. + Delete .imap folder before to make sure it goes empty. */ + index_dir = t_strconcat(storage->index_dir, "/", name, + "/.imap", NULL); + + if (index_dir != NULL && rmdir(index_dir) < 0 && + !ENOTFOUND(errno) && errno != ENOTEMPTY) { + if (!mbox_handle_errors(storage)) { + mail_storage_set_critical(storage, + "rmdir() failed for %s: %m", index_dir); + return FALSE; + } + } + if (rmdir(path) == 0) return TRUE;