aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog10
-rw-r--r--camel/camel-folder.c9
-rw-r--r--camel/providers/mbox/camel-mbox-folder.c16
3 files changed, 25 insertions, 10 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 5bf9ce3ea2..37c2dbda96 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,5 +1,15 @@
2000-02-28 NotZed <NotZed@HelixCode.com>
+ * camel-folder.c (camel_folder_search_by_expression): No, its not
+ a fatal error to search on a non-searchable folder, you just dont
+ get any matches.
+ (_open): Dont open an opened folder (i dont see why this is really
+ a bug, but what the hell ...)
+
+ * providers/mbox/camel-mbox-folder.c (_init): Set search cap on.
+ (_open): Call parent class to perform open. Remove folder-open
+ check to parent instead.
+
* camel-stream-b64.c (my_read_encode): Fixed a typo.
* providers/mbox/camel-mbox-search.c: Changed to use e-sexp,
diff --git a/camel/camel-folder.c b/camel/camel-folder.c
index 5097caa295..0e2a234d06 100644
--- a/camel/camel-folder.c
+++ b/camel/camel-folder.c
@@ -274,6 +274,13 @@ _open (CamelFolder *folder,
CamelFolderOpenMode mode,
CamelException *ex)
{
+ if (folder->open_state == FOLDER_OPEN) {
+ camel_exception_set (ex,
+ CAMEL_EXCEPTION_FOLDER_INVALID_STATE,
+ "folder is already open");
+ return;
+ }
+
folder->open_state = FOLDER_OPEN;
folder->open_mode = mode;
}
@@ -1397,7 +1404,7 @@ GList *camel_folder_search_by_expression (CamelFolder *folder,
CamelException *ex)
{
g_assert (folder != NULL);
- g_assert (folder->has_search_capability);
+ g_return_val_if_fail (folder->has_search_capability, NULL);
return CF_CLASS (folder)->search_by_expression (folder, expression, ex);
}
diff --git a/camel/providers/mbox/camel-mbox-folder.c b/camel/providers/mbox/camel-mbox-folder.c
index 45390c3928..809c0cda42 100644
--- a/camel/providers/mbox/camel-mbox-folder.c
+++ b/camel/providers/mbox/camel-mbox-folder.c
@@ -196,14 +196,17 @@ _init (CamelFolder *folder, CamelStore *parent_store,
folder->can_hold_folders = TRUE;
folder->has_summary_capability = TRUE;
folder->has_uid_capability = TRUE;
+ folder->has_search_capability = TRUE;
folder->summary = camel_folder_summary_new ();
+#if 0
mbox_folder->folder_file_path = NULL;
mbox_folder->summary_file_path = NULL;
mbox_folder->folder_dir_path = NULL;
mbox_folder->index_file_path = NULL;
mbox_folder->internal_summary = NULL;
mbox_folder->uid_array = NULL;
+#endif
CAMEL_LOG_FULL_DEBUG ("Leaving CamelMboxFolder::init_with_store\n");
}
@@ -313,16 +316,11 @@ _open (CamelFolder *folder, CamelFolderOpenMode mode, CamelException *ex)
//struct dirent *dir_entry;
//struct stat stat_buf;
-
- if (folder->open_state == FOLDER_OPEN) {
- camel_exception_set (ex,
- CAMEL_EXCEPTION_FOLDER_INVALID_STATE,
- "folder is already open");
+ /* call parent class */
+ parent_class->open (folder, mode, ex);
+ if (camel_exception_get_id(ex))
return;
- }
-
-
-
+
/* get (or create) uid list */
//if (!(mbox_load_uid_list (mbox_folder) > 0))
// mbox_generate_uid_list (mbox_folder);