diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2002-08-06 03:59:24 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2002-08-06 03:59:24 +0800 |
commit | 35f821112f95d4035fdf36bf7e11c9af29c690e8 (patch) | |
tree | b87f5bc516ac1710be105585c5f88fe6bfb8183f /camel/providers/imap/camel-imap-store.c | |
parent | a8a50b5085616775e176fd8836a94e81526059c8 (diff) | |
download | gsoc2013-evolution-35f821112f95d4035fdf36bf7e11c9af29c690e8.tar gsoc2013-evolution-35f821112f95d4035fdf36bf7e11c9af29c690e8.tar.gz gsoc2013-evolution-35f821112f95d4035fdf36bf7e11c9af29c690e8.tar.bz2 gsoc2013-evolution-35f821112f95d4035fdf36bf7e11c9af29c690e8.tar.lz gsoc2013-evolution-35f821112f95d4035fdf36bf7e11c9af29c690e8.tar.xz gsoc2013-evolution-35f821112f95d4035fdf36bf7e11c9af29c690e8.tar.zst gsoc2013-evolution-35f821112f95d4035fdf36bf7e11c9af29c690e8.zip |
If we are asking for the toplevel folders, use the IMAP store's namespace
2002-08-05 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (get_folder_info_online): If
we are asking for the toplevel folders, use the IMAP store's
namespace as the toplevel folder rather than an empty
string. Fixes bug #28574.
(imap_forget_folder): Rearrange the code so that name can never be
used uninitialised.
* providers/imap/camel-imap-utils.c (imap_namespace_concat):
Removed.
svn path=/trunk/; revision=17699
Diffstat (limited to 'camel/providers/imap/camel-imap-store.c')
-rw-r--r-- | camel/providers/imap/camel-imap-store.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index 2972c52f8b..aa423dc711 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -802,7 +802,7 @@ imap_folder_effectively_unsubscribed(CamelImapStore *imap_store, } static void -imap_forget_folder(CamelImapStore *imap_store, const char *folder_name, CamelException *ex) +imap_forget_folder (CamelImapStore *imap_store, const char *folder_name, CamelException *ex) { CamelFolderSummary *summary; CamelImapMessageCache *cache; @@ -812,9 +812,15 @@ imap_forget_folder(CamelImapStore *imap_store, const char *folder_name, CamelExc CamelFolderInfo *fi; const char *name; - storage_path = g_strdup_printf("%s/folders", imap_store->storage_path); + name = strrchr (folder_name, imap_store->dir_sep); + if (name) + name++; + else + name = folder_name; + + storage_path = g_strdup_printf ("%s/folders", imap_store->storage_path); folder_dir = e_path_to_physical (storage_path, folder_name); - g_free(storage_path); + g_free (storage_path); if (access (folder_dir, F_OK) != 0) { g_free (folder_dir); goto event; @@ -845,12 +851,6 @@ imap_forget_folder(CamelImapStore *imap_store, const char *folder_name, CamelExc rmdir (folder_dir); g_free (folder_dir); - name = strrchr (folder_name, imap_store->dir_sep); - if (name) - name++; - else - name = folder_name; - event: fi = g_new0 (CamelFolderInfo, 1); @@ -1136,7 +1136,7 @@ imap_connect_online (CamelService *service, CamelException *ex) FILE *storeinfo; int i, flags; size_t len; - + CAMEL_IMAP_STORE_LOCK (store, command_lock); if (!connect_to_server_wrapper (service, ex) || !imap_auth_loop (service, ex)) { @@ -1188,6 +1188,7 @@ imap_connect_online (CamelService *service, CamelException *ex) } g_free (result); } + if (!store->namespace) store->namespace = g_strdup (""); @@ -2017,7 +2018,7 @@ get_folder_info_online (CamelStore *store, const char *top, name = top; if (!name || name[0] == '\0') { need_inbox = TRUE; - name = ""; + name = imap_store->namespace ? imap_store->namespace : ""; } folders = g_ptr_array_new (); @@ -2057,6 +2058,7 @@ get_folder_info_online (CamelStore *store, const char *top, get_folders_online (imap_store, pattern, folders, (flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED), ex); g_free (pattern); } + if (camel_exception_is_set (ex)) { lose: for (i = 0; i < folders->len; i++) @@ -2064,7 +2066,7 @@ get_folder_info_online (CamelStore *store, const char *top, g_ptr_array_free (folders, TRUE); return NULL; } - + /* Add INBOX, if necessary */ if (need_inbox) { for (i = 0; i < folders->len; i++) { @@ -2094,7 +2096,7 @@ get_folder_info_online (CamelStore *store, const char *top, g_ptr_array_add (folders, fi); } } - + /* Assemble. */ tree = camel_folder_info_build (folders, name, imap_store->dir_sep, TRUE); if (flags & CAMEL_STORE_FOLDER_INFO_FAST) { |