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();