aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/imap/camel-imap-store.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@helixcode.com>2000-06-23 10:31:47 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2000-06-23 10:31:47 +0800
commit642d8b228a1e2207b921dc22508e9ffed888b877 (patch)
tree55e3953592c4a62b0e09d9eff94d84a93ccd3ba3 /camel/providers/imap/camel-imap-store.c
parent30f5127773cfacc67b83ead6d644db07fa817381 (diff)
downloadgsoc2013-evolution-642d8b228a1e2207b921dc22508e9ffed888b877.tar
gsoc2013-evolution-642d8b228a1e2207b921dc22508e9ffed888b877.tar.gz
gsoc2013-evolution-642d8b228a1e2207b921dc22508e9ffed888b877.tar.bz2
gsoc2013-evolution-642d8b228a1e2207b921dc22508e9ffed888b877.tar.lz
gsoc2013-evolution-642d8b228a1e2207b921dc22508e9ffed888b877.tar.xz
gsoc2013-evolution-642d8b228a1e2207b921dc22508e9ffed888b877.tar.zst
gsoc2013-evolution-642d8b228a1e2207b921dc22508e9ffed888b877.zip
Oops. Now appends the namespace to the folder before querying for the
2000-06-22 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message_count): Oops. Now appends the namespace to the folder before querying for the number of messages. * providers/imap/camel-imap-store.c (imap_folder_exists): New convenience function for use by imap_create(). (get_folder): If folder is specified as "/", we really want "INBOX". * providers/sendmail/camel-sendmail-provider.c: * providers/vee/camel-vee-provider.c: * providers/smtp/camel-smtp-provider.c: * providers/mbox/camel-mbox-provider.c: * providers/pop3/camel-pop3-provider.c: * providers/imap/camel-imap-provider.c: Updated * camel-session.c: Moved service_cache hash table into the providers. (service_cache_remove): Updated. (camel_session_get_service): Updated. * camel-url.c (camel_url_hash): Took out the hashing of url->passwd. We don't want this anymore. * providers/imap/camel-imap-folder.c (imap_init): Took out references to 'namespace' (camel_imap_folder_init): Same * providers/imap/camel-imap-folder.h: No more namespace. We are instead going to use url->path as the namespace. svn path=/trunk/; revision=3705
Diffstat (limited to 'camel/providers/imap/camel-imap-store.c')
-rw-r--r--camel/providers/imap/camel-imap-store.c40
1 files changed, 35 insertions, 5 deletions
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index c3416533f4..863501487b 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -318,6 +318,33 @@ camel_imap_store_get_toplevel_dir (CamelImapStore *store)
}
static gboolean
+imap_folder_exists (CamelFolder *folder)
+{
+ CamelStore *store = CAMEL_STORE (folder->parent_store);
+ CamelURL *url = CAMEL_SERVICE (store)->url;
+ gchar *result, *folder_path;
+ gint status;
+
+ if (url && url->path && strcmp (folder->full_name, "INBOX"))
+ folder_path = g_strdup_printf ("%s/%s", url->path + 1, folder->full_name);
+ else
+ folder_path = g_strdup (folder->full_name);
+
+ status = camel_imap_command_extended (CAMEL_IMAP_STORE (folder->parent_store), NULL,
+ &result, "EXAMINE %s", folder_path);
+
+ if (status != CAMEL_IMAP_OK) {
+ g_free (result);
+ g_free (folder_path);
+ return FALSE;
+ }
+ g_free (folder_path);
+ g_free (result);
+
+ return TRUE;
+}
+
+static gboolean
imap_create (CamelFolder *folder, CamelException *ex)
{
CamelStore *store = CAMEL_STORE (folder->parent_store);
@@ -335,8 +362,8 @@ imap_create (CamelFolder *folder, CamelException *ex)
if (!strcmp (folder->full_name, "INBOX"))
return TRUE;
-
- if (camel_folder_get_subfolder (folder->parent_folder, folder->name, FALSE, ex))
+
+ if (imap_folder_exists (folder))
return TRUE;
/* create the directory for the subfolder */
@@ -374,11 +401,14 @@ get_folder (CamelStore *store, const char *folder_name, gboolean create, CamelEx
g_return_val_if_fail (store != NULL, NULL);
g_return_val_if_fail (folder_name != NULL, NULL);
- folder_path = g_strdup (folder_name);
+ if (!strcmp (folder_name, "/"))
+ folder_path = g_strdup ("INBOX");
+ else
+ folder_path = g_strdup (folder_name);
+
new_folder = camel_imap_folder_new (store, folder_path, ex);
- if (!imap_create (new_folder, ex)) {
- /* we should set an exception */
+ if (create && !imap_create (new_folder, ex)) {
return NULL;
}