Mercurial > dovecot > original-hg > dovecot-1.2
changeset 4992:d45c13b90629 HEAD
If index/control dirs were different than the maildir, deleting mailboxes
didn't move their contents correctly.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 05 Jan 2007 16:22:33 +0200 |
parents | e4afafbb963b |
children | 62bbe686dc30 |
files | src/plugins/lazy-expunge/lazy-expunge-plugin.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/lazy-expunge/lazy-expunge-plugin.c Thu Jan 04 16:04:13 2007 +0200 +++ b/src/plugins/lazy-expunge/lazy-expunge-plugin.c Fri Jan 05 16:22:33 2007 +0200 @@ -303,10 +303,17 @@ str_append(src_path, srcdir); str_append(dest_path, destdir); + str_append_c(src_path, '/'); + str_append_c(dest_path, '/'); src_dirlen = str_len(src_path); dest_dirlen = str_len(dest_path); while ((dp = readdir(dir)) != NULL) { + if (dp->d_name[0] == '.' && + (dp->d_name[1] == '\0' || + (dp->d_name[1] == '.' && dp->d_name[2] == '\0'))) + continue; + str_truncate(src_path, src_dirlen); str_append(src_path, dp->d_name); str_truncate(dest_path, dest_dirlen); @@ -369,13 +376,13 @@ if (strcmp(src2dir, srcdir) != 0) { destdir = mail_storage_get_mailbox_control_dir(dest_storage, dest_name); - (void)dir_move_or_merge(src_storage, srcdir, destdir); + (void)dir_move_or_merge(src_storage, src2dir, destdir); } src3dir = mail_storage_get_mailbox_index_dir(src_storage, src_name); if (strcmp(src3dir, srcdir) != 0 && strcmp(src3dir, src2dir) != 0) { destdir = mail_storage_get_mailbox_index_dir(dest_storage, dest_name); - (void)dir_move_or_merge(src_storage, srcdir, destdir); + (void)dir_move_or_merge(src_storage, src3dir, destdir); } t_pop();