diff options
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | camel/camel-folder.c | 43 | ||||
-rw-r--r-- | camel/camel-folder.h | 1 | ||||
-rw-r--r-- | camel/providers/mbox/camel-mbox-folder.c | 1 | ||||
-rw-r--r-- | tests/test10.c | 8 |
5 files changed, 61 insertions, 8 deletions
@@ -1,5 +1,21 @@ 2000-01-21 bertrand <bertrand@helixcode.com> + * tests/test10.c: + test the mbox provider. + + * camel/camel-folder.c (_set_name): + if camel_folder_get_mode returns an + exception, return it instead of + overriding it with a new one. + (camel_folder_is_open): make the is_open + method public. + (_set_name): use the is_open instead of + get_mode. + (_set_name): set the fullname even in the case + where the folder has no parent. + (_set_name): use %c, not %d to add the + separator char into the full path. + * camel/camel-store.c: add exception handling everywhere in the store related functions arguments. * camel/providers/mbox/camel-mbox-folder.c: idem diff --git a/camel/camel-folder.c b/camel/camel-folder.c index 3b22011d55..69e1df9694 100644 --- a/camel/camel-folder.c +++ b/camel/camel-folder.c @@ -477,7 +477,9 @@ _set_name (CamelFolder *folder, "name parameter is NULL"); return; } - + + CAMEL_LOG_FULL_DEBUG ("CamelFolder::set_name, folder name is %s\n", name); + if (!folder->parent_store) { camel_exception_set (ex, @@ -486,10 +488,11 @@ _set_name (CamelFolder *folder, return; } - /* the set_name method is valid only only on + /* the set_name method is valid only on close folders */ - if (camel_folder_get_mode (folder, ex) != FOLDER_CLOSE) { + if (camel_folder_is_open (folder, ex)) { + if (camel_exception_get_id (ex)) return; camel_exception_set (ex, CAMEL_EXCEPTION_FOLDER_INVALID, "CamelFolder::set_name is valid only on closed folders"); @@ -497,14 +500,19 @@ _set_name (CamelFolder *folder, } separator = camel_store_get_separator (folder->parent_store, ex); + if (camel_exception_get_id (ex)) return; + camel_exception_clear (ex); if (folder->parent_folder) { parent_full_name = camel_folder_get_full_name (folder->parent_folder, ex); if (camel_exception_get_id (ex)) return; - full_name = g_strdup_printf ("%s%d%s", parent_full_name, separator, name); - } - + full_name = g_strdup_printf ("%s%c%s", parent_full_name, separator, name); + } else { + full_name = g_strdup_printf ("%c%s", separator, name); + } + + CAMEL_LOG_FULL_DEBUG ("CamelFolder::set_name, folder full name set to %s\n", full_name); folder->name = g_strdup (name); folder->full_name = full_name; @@ -759,6 +767,29 @@ _is_open (CamelFolder *folder, CamelException *ex) } +/** + * _is_open: test if the folder is open + * @folder: The folder object + * + * Tests if a folder is open. If not open it can be opened + * CamelFolder::open + * + * Return value: true if the folder exists, false otherwise + **/ +gboolean +camel_folder_is_open (CamelFolder *folder, CamelException *ex) +{ + if (!folder) { + camel_exception_set (ex, + CAMEL_EXCEPTION_FOLDER_NULL, + "folder object is NULL"); + return FALSE; + } + + return (CF_CLASS(folder)->is_open (folder, ex)); +} + + diff --git a/camel/camel-folder.h b/camel/camel-folder.h index 36cdc50f29..d9715c4d54 100644 --- a/camel/camel-folder.h +++ b/camel/camel-folder.h @@ -249,6 +249,7 @@ const gchar *camel_folder_get_full_name (CamelFolder *folder, CamelException *ex gboolean camel_folder_exists (CamelFolder *folder, CamelException *ex); const GList *camel_folder_list_permanent_flags (CamelFolder *folder, CamelException *ex); CamelFolderOpenMode camel_folder_get_mode (CamelFolder *folder, CamelException *ex); +gboolean camel_folder_is_open (CamelFolder *folder, CamelException *ex); diff --git a/camel/providers/mbox/camel-mbox-folder.c b/camel/providers/mbox/camel-mbox-folder.c index e3638e23d4..1a01462fd6 100644 --- a/camel/providers/mbox/camel-mbox-folder.c +++ b/camel/providers/mbox/camel-mbox-folder.c @@ -175,6 +175,7 @@ _init_with_store (CamelFolder *folder, CamelStore *parent_store, CamelException parent_class->init_with_store (folder, parent_store, ex); if (camel_exception_get_id (ex)) return; + printf ("%d\n", folder->open_mode); /* we assume that the parent init_with_store method checks for the existance of @folder */ diff --git a/tests/test10.c b/tests/test10.c index 3db63bfd3e..deeed0b0ac 100644 --- a/tests/test10.c +++ b/tests/test10.c @@ -38,10 +38,14 @@ main (int argc, char**argv) store = camel_session_get_store (session, store_url); - folder = camel_store_get_folder (store, "Inbox"); - + folder = camel_store_get_folder (store, "Inbox", ex); + if (camel_exception_get_id (ex)) { + printf ("Exception caughy in camel_store_get_folder" + "Full description : %s\n", camel_exception_get_description (ex)); + } camel_folder_open (folder, FOLDER_OPEN_RW, ex); + camel_folder_close (folder, FALSE, ex); return 1; } |