Updated: a separator is now a char* rather than a single char because IMAP
authorJeffrey Stedfast <fejj@helixcode.com>
Wed, 14 Jun 2000 05:10:53 +0000 (05:10 +0000)
committerJeffrey Stedfast <fejj@src.gnome.org>
Wed, 14 Jun 2000 05:10:53 +0000 (05:10 +0000)
2000-06-14  Jeffrey Stedfast  <fejj@helixcode.com>

* camel-folder.c (init): Updated: a separator is now a char* rather than
a single char because IMAP can have a string for a directory separator.
Also, since IMAP does not begin with a directory separator, there is a new
argument (path_begins_with_sep) which decides if a directory should begin
with a directory separator.

* providers/imap/camel-imap-store.c (imap_create): Since, on connect,
Camel tries to create INBOX (which already exists on every IMAP provider)
we can return TRUE when the folder name is "INBOX".

* providers/vee/camel-vee-folder.c (vee_init): Updated.

* providers/imap/camel-imap-folder.c (camel_imap_folder_new): Updated.

* providers/mbox/camel-mbox-store.c (get_folder): Updated.

* providers/mbox/camel-mbox-folder.c (mbox_init): Updated.

* providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Updated.

camel/providers/imap/camel-imap-folder.c
camel/providers/imap/camel-imap-store.c

index 2f6af67..37e4b06 100644 (file)
@@ -57,7 +57,8 @@ static CamelFolderClass *parent_class = NULL;
 
 static void imap_init (CamelFolder *folder, CamelStore *parent_store,
                       CamelFolder *parent_folder, const gchar *name,
-                      gchar separator, CamelException *ex);
+                      gchar *separator, gboolean path_begns_with_sep,
+                      CamelException *ex);
 
 static void imap_open (CamelFolder *folder, CamelFolderOpenMode mode, CamelException *ex);
 static void imap_close (CamelFolder *folder, gboolean expunge, CamelException *ex);
@@ -174,7 +175,7 @@ camel_imap_folder_new (CamelStore *parent, CamelException *ex)
 {
        CamelFolder *folder = CAMEL_FOLDER (gtk_object_new (camel_imap_folder_get_type (), NULL));
        
-       CF_CLASS (folder)->init (folder, parent, NULL, "INBOX", '/', ex);
+       CF_CLASS (folder)->init (folder, parent, NULL, "INBOX", "/", FALSE, ex);
 
        return folder;
 }
@@ -187,12 +188,12 @@ imap_finalize (GtkObject *object)
 
 static void 
 imap_init (CamelFolder *folder, CamelStore *parent_store, CamelFolder *parent_folder,
-          const gchar *name, gchar separator, CamelException *ex)
+          const gchar *name, gchar *separator, gboolean path_begins_with_sep, CamelException *ex)
 {
        CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
        
        /* call parent method */
-       parent_class->init (folder, parent_store, parent_folder, name, separator, ex);
+       parent_class->init (folder, parent_store, parent_folder, name, separator, path_begins_with_sep, ex);
        if (camel_exception_get_id (ex))
                return;
 
index 96a830e..6529033 100644 (file)
@@ -324,16 +324,19 @@ imap_create (CamelFolder *folder, CamelException *ex)
        gint status;
 
        g_return_val_if_fail (folder != NULL, FALSE);
-
+       
        if (!(folder->full_name || folder->name)) {
                camel_exception_set (ex, CAMEL_EXCEPTION_FOLDER_INVALID,
                                     "invalid folder path. Use set_name ?");
                return FALSE;
        }
+
+       if (!strcmp(folder->full_name, "INBOX"))
+               return TRUE;
        
        if (camel_folder_get_subfolder(folder->parent_folder, folder->name, FALSE, ex))
                return TRUE;
-
+       
         /* create the directory for the subfolder */
        status = camel_imap_command_extended (CAMEL_IMAP_STORE (folder->parent_store), NULL,
                                              &result, "CREATE %s", folder->full_name);