diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2009-11-05 10:30:04 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2009-11-05 10:30:04 +0000 |
commit | 1bf86f0537be17e8a28ba316092e10bd44669e54 (patch) | |
tree | c53c2216b295d2fef293d1146989c9f58e6de882 /libsylph | |
parent | 17e2ef839a0ee675d9483136c6d6189b2ffc7f3e (diff) |
add a new flag: RemoteFolder::remove_cache_on_destroy.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2334 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph')
-rw-r--r-- | libsylph/folder.c | 1 | ||||
-rw-r--r-- | libsylph/folder.h | 5 | ||||
-rw-r--r-- | libsylph/imap.c | 24 | ||||
-rw-r--r-- | libsylph/news.c | 26 | ||||
-rw-r--r-- | libsylph/utils.c | 2 |
5 files changed, 35 insertions, 23 deletions
diff --git a/libsylph/folder.c b/libsylph/folder.c index 10562362..cefc3a0b 100644 --- a/libsylph/folder.c +++ b/libsylph/folder.c @@ -110,6 +110,7 @@ void folder_remote_folder_init(Folder *folder, const gchar *name, { folder_init(folder, name); REMOTE_FOLDER(folder)->session = NULL; + REMOTE_FOLDER(folder)->remove_cache_on_destroy = TRUE; } void folder_destroy(Folder *folder) diff --git a/libsylph/folder.h b/libsylph/folder.h index d8bfc8b4..7c046eb3 100644 --- a/libsylph/folder.h +++ b/libsylph/folder.h @@ -241,6 +241,11 @@ struct _RemoteFolder Folder folder; Session *session; + + guint remove_cache_on_destroy : 1; + guint dummy1 : 1; + guint dummy2 : 1; + guint dummy3 : 1; }; #if 0 diff --git a/libsylph/imap.c b/libsylph/imap.c index 7459e71c..c69ed0fe 100644 --- a/libsylph/imap.c +++ b/libsylph/imap.c @@ -476,20 +476,22 @@ static Folder *imap_folder_new(const gchar *name, const gchar *path) static void imap_folder_destroy(Folder *folder) { - gchar *dir; - g_return_if_fail(folder->account != NULL); - dir = folder_get_path(folder); - if (is_dir_exist(dir)) - remove_dir_recursive(dir); - g_free(dir); + if (REMOTE_FOLDER(folder)->remove_cache_on_destroy) { + gchar *dir; - dir = g_strconcat(get_imap_cache_dir(), G_DIR_SEPARATOR_S, - folder->account->recv_server, NULL); - if (is_dir_exist(dir)) - g_rmdir(dir); - g_free(dir); + dir = folder_get_path(folder); + if (is_dir_exist(dir)) + remove_dir_recursive(dir); + g_free(dir); + + dir = g_strconcat(get_imap_cache_dir(), G_DIR_SEPARATOR_S, + folder->account->recv_server, NULL); + if (is_dir_exist(dir)) + g_rmdir(dir); + g_free(dir); + } folder_remote_folder_destroy(REMOTE_FOLDER(folder)); } diff --git a/libsylph/news.c b/libsylph/news.c index 55cd7c0d..5a6afc14 100644 --- a/libsylph/news.c +++ b/libsylph/news.c @@ -176,18 +176,20 @@ static Folder *news_folder_new(const gchar *name, const gchar *path) static void news_folder_destroy(Folder *folder) { - gchar *dir; - - dir = folder_get_path(folder); - if (is_dir_exist(dir)) - remove_dir_recursive(dir); - g_free(dir); - - dir = g_strconcat(get_news_cache_dir(), G_DIR_SEPARATOR_S, - folder->account->nntp_server, NULL); - if (is_dir_exist(dir)) - g_rmdir(dir); - g_free(dir); + if (REMOTE_FOLDER(folder)->remove_cache_on_destroy) { + gchar *dir; + + dir = folder_get_path(folder); + if (is_dir_exist(dir)) + remove_dir_recursive(dir); + g_free(dir); + + dir = g_strconcat(get_news_cache_dir(), G_DIR_SEPARATOR_S, + folder->account->nntp_server, NULL); + if (is_dir_exist(dir)) + g_rmdir(dir); + g_free(dir); + } folder_remote_folder_destroy(REMOTE_FOLDER(folder)); } diff --git a/libsylph/utils.c b/libsylph/utils.c index 2aae90d0..62ab6aec 100644 --- a/libsylph/utils.c +++ b/libsylph/utils.c @@ -2665,6 +2665,8 @@ gint remove_dir_recursive(const gchar *dir) gchar *cur_dir; gint ret; + debug_print("remove_dir_recursive: %s\n", dir); + cur_dir = g_get_current_dir(); if (g_chdir(dir) < 0) { |