From 642d8b228a1e2207b921dc22508e9ffed888b877 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Fri, 23 Jun 2000 02:31:47 +0000 Subject: Oops. Now appends the namespace to the folder before querying for the 2000-06-22 Jeffrey Stedfast * 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 --- camel/providers/imap/camel-imap-store.c | 40 ++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'camel/providers/imap/camel-imap-store.c') 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 @@ -317,6 +317,33 @@ camel_imap_store_get_toplevel_dir (CamelImapStore *store) return url->path; } +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) { @@ -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; } -- cgit v1.2.3