aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-folder-cache.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2005-08-12 16:31:19 +0800
committerMichael Zucci <zucchi@src.gnome.org>2005-08-12 16:31:19 +0800
commite86d709799910ff52e26cff3651aa9ecb9671518 (patch)
treec28c51791f5a6b35b88535f1dd2c3d0f757d0437 /mail/mail-folder-cache.c
parentcc318fdef1a001a619bf1c3cb832f0e15fcb703d (diff)
downloadgsoc2013-evolution-e86d709799910ff52e26cff3651aa9ecb9671518.tar
gsoc2013-evolution-e86d709799910ff52e26cff3651aa9ecb9671518.tar.gz
gsoc2013-evolution-e86d709799910ff52e26cff3651aa9ecb9671518.tar.bz2
gsoc2013-evolution-e86d709799910ff52e26cff3651aa9ecb9671518.tar.lz
gsoc2013-evolution-e86d709799910ff52e26cff3651aa9ecb9671518.tar.xz
gsoc2013-evolution-e86d709799910ff52e26cff3651aa9ecb9671518.tar.zst
gsoc2013-evolution-e86d709799910ff52e26cff3651aa9ecb9671518.zip
** See #232499.
2005-08-11 Not Zed <NotZed@Ximian.com> ** See #232499. * mail-folder-cache.c (rename_folders): rename view meta-data along with the folder. svn path=/trunk/; revision=30093
Diffstat (limited to 'mail/mail-folder-cache.c')
-rw-r--r--mail/mail-folder-cache.c46
1 files changed, 43 insertions, 3 deletions
diff --git a/mail/mail-folder-cache.c b/mail/mail-folder-cache.c
index c7e9bcff06..72a54c6177 100644
--- a/mail/mail-folder-cache.c
+++ b/mail/mail-folder-cache.c
@@ -588,10 +588,32 @@ store_folder_deleted(CamelObject *o, void *event_data, void *data)
store_folder_unsubscribed(o, event_data, data);
}
+static char *
+folder_to_url(CamelStore *store, const char *full_name)
+{
+ CamelURL *url;
+ char *out;
+
+ url = camel_url_copy(((CamelService *)store)->url);
+ if (((CamelService *)store)->provider->url_flags & CAMEL_URL_FRAGMENT_IS_PATH) {
+ camel_url_set_fragment(url, full_name);
+ } else {
+ char *name = g_alloca(strlen(full_name)+2);
+
+ sprintf(name, "/%s", full_name);
+ camel_url_set_path(url, name);
+ }
+
+ out = camel_url_to_string(url, CAMEL_URL_HIDE_ALL);
+ camel_url_free(url);
+
+ return out;
+}
+
static void
rename_folders(struct _store_info *si, const char *oldbase, const char *newbase, CamelFolderInfo *fi)
{
- char *old;
+ char *old, *olduri, *oldfile, *newuri, *newfile;
struct _folder_info *mfi;
struct _folder_update *up;
@@ -630,8 +652,6 @@ rename_folders(struct _store_info *si, const char *oldbase, const char *newbase,
g_hash_table_insert(si->folders_uri, mfi->uri, mfi);
}
- g_free(old);
-
up->full_name = g_strdup(mfi->full_name);
up->uri = g_strdup(mfi->uri);
up->unread = fi->unread==-1?0:fi->unread;
@@ -649,6 +669,26 @@ rename_folders(struct _store_info *si, const char *oldbase, const char *newbase,
if (fi->child)
rename_folders(si, oldbase, newbase, fi->child, folders);
#endif
+
+ /* rename the meta-data we maintain ourselves */
+ olduri = folder_to_url(si->store, old);
+ e_filename_make_safe(olduri);
+ newuri = folder_to_url(si->store, fi->full_name);
+ e_filename_make_safe(newuri);
+ oldfile = g_strdup_printf("%s/mail/config/custom_view-%s.xml", mail_component_peek_base_directory(NULL), olduri);
+ newfile = g_strdup_printf("%s/mail/config/custom_view-%s.xml", mail_component_peek_base_directory(NULL), newuri);
+ rename(oldfile, newfile);
+ g_free(oldfile);
+ g_free(newfile);
+ oldfile = g_strdup_printf("%s/mail/config/current_view-%s.xml", mail_component_peek_base_directory(NULL), olduri);
+ newfile = g_strdup_printf("%s/mail/config/current_view-%s.xml", mail_component_peek_base_directory(NULL), newuri);
+ rename(oldfile, newfile);
+ g_free(oldfile);
+ g_free(newfile);
+ g_free(olduri);
+ g_free(newuri);
+
+ g_free(old);
}
static void