aboutsummaryrefslogtreecommitdiffstats
path: root/mail/message-list.c
diff options
context:
space:
mode:
authorbertrand <Bertrand.Guiheneuf@aful.org>2000-02-22 19:16:36 +0800
committerBertrand Guiheneuf <bertrand@src.gnome.org>2000-02-22 19:16:36 +0800
commitf65a2d78c6cb123fd94b173aa4e877f22d314d4c (patch)
tree3a3cba1006293ae988dd1213a0f88bdd90dab8b7 /mail/message-list.c
parent7c6897ee95e4346e991185c014bcfce003809fd8 (diff)
downloadgsoc2013-evolution-f65a2d78c6cb123fd94b173aa4e877f22d314d4c.tar
gsoc2013-evolution-f65a2d78c6cb123fd94b173aa4e877f22d314d4c.tar.gz
gsoc2013-evolution-f65a2d78c6cb123fd94b173aa4e877f22d314d4c.tar.bz2
gsoc2013-evolution-f65a2d78c6cb123fd94b173aa4e877f22d314d4c.tar.lz
gsoc2013-evolution-f65a2d78c6cb123fd94b173aa4e877f22d314d4c.tar.xz
gsoc2013-evolution-f65a2d78c6cb123fd94b173aa4e877f22d314d4c.tar.zst
gsoc2013-evolution-f65a2d78c6cb123fd94b173aa4e877f22d314d4c.zip
fix to show a sample correct implementation.
2000-02-22 bertrand <Bertrand.Guiheneuf@aful.org> * message-list.c (message_list_set_folder): fix to show a sample correct implementation. * camel-folder.c (camel_folder_get_subfolder): (camel_folder_create): (camel_folder_delete): (camel_folder_delete_messages): (camel_folder_list_subfolders): (camel_folder_expunge): (camel_folder_get_message_by_number): (camel_folder_get_message_count): (camel_folder_append_message): (camel_folder_copy_message_to): (camel_folder_get_summary): (camel_folder_get_message_uid): (camel_folder_get_message_by_uid): (camel_folder_get_uid_list): Check folder state (open/close) and raise an exception if it is not ok. * providers/mbox/camel-mbox-folder.c (_create): create the file and the path with two different names. * camel-folder.c (_create): handle the case when the folder name starts with '/' * camel-exception.c (camel_exception_new): use (void) instead of () in decl. * camel-exception.h: cosmetic fixes. * camel-exception.c (camel_exception_init): new routine. Fix a bug in mail/message-list.c * camel-folder.h: cosmetic changes. * camel-stream-b64.c (reset__static): added a reset method. Thanks message-browser to find so much bugs :) * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): readd Unicode libs. Fixes and exception handling in camel-folder. Fixes in mail/evolution-mail to make it not segfault and to demonstrate a correct implementation. svn path=/trunk/; revision=1902
Diffstat (limited to 'mail/message-list.c')
-rw-r--r--mail/message-list.c42
1 files changed, 40 insertions, 2 deletions
diff --git a/mail/message-list.c b/mail/message-list.c
index 7da9b9fa8b..6f571c1029 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -457,19 +457,57 @@ void
message_list_set_folder (MessageList *message_list, CamelFolder *camel_folder)
{
CamelException ex;
-
+ gboolean folder_exists;
+
g_return_if_fail (message_list != NULL);
g_return_if_fail (camel_folder != NULL);
g_return_if_fail (IS_MESSAGE_LIST (message_list));
g_return_if_fail (CAMEL_IS_FOLDER (camel_folder));
g_return_if_fail (camel_folder_has_summary_capability (camel_folder, &ex));
+
+ camel_exception_init (&ex);
+
if (message_list->folder)
gtk_object_unref (GTK_OBJECT (message_list->folder));
message_list->folder = camel_folder;
- message_list->folder_summary = camel_folder_get_summary (camel_folder, &ex);
+ folder_exists = camel_folder_exists (camel_folder, NULL);
+
+ if (camel_exception_get_id (&ex)) {
+ printf ("Unable to test for folder existence \n");
+ return;
+ }
+
+ if (!folder_exists) {
+ g_warning ("Folder does not exist, creating it\n");
+ /*
+ if you don't want the directory to be created
+ automatically here remove this.
+ */
+ camel_folder_create (camel_folder, &ex);
+ if (camel_exception_get_id (&ex)) {
+ printf ("Unable to create folder\n");
+ return;
+ }
+
+ }
+
+
+ camel_folder_open (camel_folder, FOLDER_OPEN_RW, &ex);
+ if (camel_exception_get_id (&ex)) {
+ printf ("Unable to open folder\n");
+ return;
+ }
+
+ message_list->folder_summary = camel_folder_get_summary (camel_folder, &ex);
+ if (camel_exception_get_id (&ex)) {
+ printf ("Unable to get summary \n");
+ return;
+ }
+
+
gtk_object_ref (GTK_OBJECT (camel_folder));
printf ("Modelo cambio!\n");