#undef ACP_FDUP
#undef ACP_FASSIGN
+static void account_empty_cache(PrefsAccount *ac_prefs)
+{
+ gchar *cache_dir;
+
+ cache_dir = prefs_account_cache_dir(ac_prefs, FALSE);
+ if (cache_dir == NULL)
+ return; /* no cache dir, nothing to do */
+
+ if (is_dir_exist(cache_dir) && remove_dir_recursive(cache_dir) < 0) {
+ g_warning("can't remove directory '%s'", cache_dir);
+ } else {
+ gchar *server_dir = prefs_account_cache_dir(ac_prefs, TRUE);
+ if (g_rmdir(server_dir) == 0)
+ debug_print("Removed empty cache server directory\n");
+ else
+ debug_print("Cache server directory not empty: not removed\n");
+ g_free(server_dir);
+ }
+ g_free(cache_dir);
+}
+
static void account_delete(GtkWidget *widget, gpointer data)
{
PrefsAccount *ac_prefs;
GList *list;
Folder *folder;
GSList *cur;
-
+
ac_prefs = account_list_view_get_selected_account(edit_account.list_view);
if (ac_prefs == NULL)
return;
cur = g_slist_next(cur);
}
}
+
+ debug_print("Removing cache directory of this account...\n");
+ account_empty_cache(ac_prefs);
+
folder_write_list();
}
{
prefs_pages = g_slist_remove(prefs_pages, page);
}
+
+gchar *prefs_account_cache_dir(PrefsAccount *ac_prefs, gboolean for_server)
+{
+ gchar *dir = NULL;
+#ifdef G_OS_WIN32
+ gchar *sanitized_server;
+#endif
+
+ if (ac_prefs->protocol == A_IMAP4) {
+#ifdef G_OS_WIN32
+ sanitized_server = g_strdup(ac_prefs->recv_server);
+ g_strdelimit(sanitized_server, ":", ',');
+#endif
+ if (for_server) {
+ dir = g_strconcat(get_imap_cache_dir(),
+ G_DIR_SEPARATOR_S,
+#ifdef G_OS_WIN32
+ sanitized_server,
+#else
+ ac_prefs->recv_server,
+#endif
+ NULL);
+ } else {
+ dir = g_strconcat(get_imap_cache_dir(),
+ G_DIR_SEPARATOR_S,
+#ifdef G_OS_WIN32
+ sanitized_server,
+#else
+ ac_prefs->recv_server,
+#endif
+ G_DIR_SEPARATOR_S,
+ ac_prefs->userid,
+ NULL);
+ }
+#ifdef G_OS_WIN32
+ g_free(sanitized_server);
+#endif
+ }
+
+ return dir;
+}
void prefs_account_register_page (PrefsPage *page);
void prefs_account_unregister_page (PrefsPage *page);
+gchar *prefs_account_cache_dir (PrefsAccount *ac_prefs, gboolean for_server);
+
#endif /* PREFS_ACCOUNT_H */