]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
When deleting directory, delete .imap dir under it first.
authorTimo Sirainen <tss@iki.fi>
Wed, 25 Jun 2003 23:31:03 +0000 (02:31 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 25 Jun 2003 23:31:03 +0000 (02:31 +0300)
--HG--
branch : HEAD

src/lib-storage/index/mbox/mbox-storage.c

index 158fb9526dd2fa7b73497b8c15c068711e080d01..735a50e1b9424287b9687a40ba8b78cc3812585b 100644 (file)
@@ -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;