From 1bf86f0537be17e8a28ba316092e10bd44669e54 Mon Sep 17 00:00:00 2001 From: hiro Date: Thu, 5 Nov 2009 10:30:04 +0000 Subject: add a new flag: RemoteFolder::remove_cache_on_destroy. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2334 ee746299-78ed-0310-b773-934348b2243d --- ChangeLog | 9 +++++++++ configure.in | 2 +- libsylph/folder.c | 1 + libsylph/folder.h | 5 +++++ libsylph/imap.c | 24 +++++++++++++----------- libsylph/news.c | 26 ++++++++++++++------------ libsylph/utils.c | 2 ++ 7 files changed, 45 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 95be29e9..41ead63f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-11-05 + + * libsylph/folder.[ch] + libsylph/news.c + libsylph/imap.c: add a new flag: + RemoteFolder::remove_cache_on_destroy. If this is not set, caches + will not be removed on folder_destroy(). + * libsylph/utils.c: remove_dir_recursive(): added debug print. + 2009-11-05 * libsylph/imap.c: imap_create_tree(): return error if diff --git a/configure.in b/configure.in index a4ed7998..3d736f79 100644 --- a/configure.in +++ b/configure.in @@ -9,7 +9,7 @@ MINOR_VERSION=0 MICRO_VERSION=0 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=beta1 +EXTRA_VERSION=beta2 BUILD_REVISION=0 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION 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) { -- cgit v1.2.3