aboutsummaryrefslogtreecommitdiff
path: root/libsylph
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-11-05 10:30:04 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-11-05 10:30:04 +0000
commit1bf86f0537be17e8a28ba316092e10bd44669e54 (patch)
treec53c2216b295d2fef293d1146989c9f58e6de882 /libsylph
parent17e2ef839a0ee675d9483136c6d6189b2ffc7f3e (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.c1
-rw-r--r--libsylph/folder.h5
-rw-r--r--libsylph/imap.c24
-rw-r--r--libsylph/news.c26
-rw-r--r--libsylph/utils.c2
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) {