aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-migrate.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/em-migrate.c')
-rw-r--r--mail/em-migrate.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/mail/em-migrate.c b/mail/em-migrate.c
index 09aa497b61..82109a1f3c 100644
--- a/mail/em-migrate.c
+++ b/mail/em-migrate.c
@@ -2639,6 +2639,39 @@ em_migrate_1_4 (const char *evolution_dir, xmlDocPtr filters, xmlDocPtr vfolders
return 0;
}
+static void
+em_update_accounts_2_11 (void)
+{
+ EAccountList *accounts;
+ EIterator *iter;
+ gboolean changed = FALSE;
+
+ if (!(accounts = mail_config_get_accounts ()))
+ return;
+
+ iter = e_list_get_iterator ((EList *) accounts);
+ while (e_iterator_is_valid (iter)) {
+ EAccount *account = (EAccount *) e_iterator_get (iter);
+
+ if (g_str_has_prefix (account->source->url, "spool://")) {
+ if (g_file_test (account->source->url + 8, G_FILE_TEST_IS_DIR)) {
+ char *str = g_strdup_printf ("spooldir://%s", account->source->url + 8);
+
+ g_free (account->source->url);
+ account->source->url = str;
+ changed = TRUE;
+ }
+ }
+
+ e_iterator_next (iter);
+ }
+
+ g_object_unref (iter);
+
+ if (changed)
+ mail_config_save_accounts ();
+}
+
#endif
static int
@@ -2777,6 +2810,10 @@ em_migrate (const char *evolution_dir, int major, int minor, int revision, Camel
g_free (path);
}
+
+ if (major < 2 || (major == 2 && minor < 12)) {
+ em_update_accounts_2_11 ();
+ }
#endif /* !G_OS_WIN32 */
return 0;
}