changeset 4339:858ca16c704b HEAD

Convert subscriptions also.
author Timo Sirainen <tss@iki.fi>
date Fri, 16 Jun 2006 12:22:16 +0300
parents 3f6e11e5ed2d
children 31e87bda1362
files src/plugins/convert/convert-storage.c
diffstat 1 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/convert/convert-storage.c	Fri Jun 16 12:21:34 2006 +0300
+++ b/src/plugins/convert/convert-storage.c	Fri Jun 16 12:22:16 2006 +0300
@@ -180,6 +180,28 @@
 	return ret;
 }
 
+static int mailbox_list_copy_subscriptions(struct mail_storage *source_storage,
+					   struct mail_storage *dest_storage)
+{
+	struct mailbox_list_context *iter;
+	struct mailbox_list *list;
+	int ret = 0;
+
+	iter = mail_storage_mailbox_list_init(source_storage, "", "*",
+					      MAILBOX_LIST_SUBSCRIBED |
+					      MAILBOX_LIST_FAST_FLAGS);
+	while ((list = mail_storage_mailbox_list_next(iter)) != NULL) {
+		if (mail_storage_set_subscribed(dest_storage, list->name,
+						TRUE) < 0) {
+			ret = -1;
+			break;
+		}
+	}
+	if (mail_storage_mailbox_list_deinit(&iter) < 0)
+		ret = -1;
+	return ret;
+}
+
 int convert_storage(const char *user, const char *home_dir,
 		    const char *source_data, const char *dest_data)
 {
@@ -225,6 +247,10 @@
 		ret = -1;
 	} else {
 		ret = mailbox_list_copy(source_storage, dest_storage, dotlock);
+		if (ret == 0) {
+			ret = mailbox_list_copy_subscriptions(source_storage,
+							      dest_storage);
+		}
 	}
 
 	if (ret == 0) {