aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--configure.in2
-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
7 files changed, 45 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 95be29e9..41ead63f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
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
imap_scan_tree() failed.
* src/account_dialog.c: show waiting dialog on creating folder tree.
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) {