diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-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 |
7 files changed, 45 insertions, 24 deletions
@@ -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) { |