diff options
author | Not Zed <NotZed@HelixCode.com> | 2000-10-18 14:11:54 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2000-10-18 14:11:54 +0800 |
commit | 229f78b929e0a9553b543f596a7643129d80b494 (patch) | |
tree | 8b33f2672a07f2431fae5bf2f686a52fb8b2e401 /camel/providers/mh | |
parent | 345f04ccae499e039f1f6f3d21768a2d93ea1c83 (diff) | |
download | gsoc2013-evolution-229f78b929e0a9553b543f596a7643129d80b494.tar gsoc2013-evolution-229f78b929e0a9553b543f596a7643129d80b494.tar.gz gsoc2013-evolution-229f78b929e0a9553b543f596a7643129d80b494.tar.bz2 gsoc2013-evolution-229f78b929e0a9553b543f596a7643129d80b494.tar.lz gsoc2013-evolution-229f78b929e0a9553b543f596a7643129d80b494.tar.xz gsoc2013-evolution-229f78b929e0a9553b543f596a7643129d80b494.tar.zst gsoc2013-evolution-229f78b929e0a9553b543f596a7643129d80b494.zip |
No, we must not encode the headers here. These interfaces ARE raw
2000-10-18 Not Zed <NotZed@HelixCode.com>
* camel-mime-part.c (add_header): No, we must not encode the
headers here. These interfaces ARE raw interfaces as they are
defined in camel_medium. Also removed a bogus/meaningless FIXME.
(set_header): Likewise here, we must not.
(process_header): Removed another bogus comment.
* camel-object.c (shared_is_of_type): Comment out the spitting of
a big warning when we're trying to determine types from code.
* providers/mbox/camel-mbox-summary.c
(message_info_new_from_parser): Only call ibex funcitons if we
have an index.
* providers/mh/camel-mh-summary.c (camel_mh_summary_add): Only
call ibex functions if we have an index.
(remove_summary): Likewise.
(camel_mh_summary_check): Likewise.
* providers/nntp/camel-nntp-store.c (nntp_store_get_folder):
get_folder -> flags argument.
* providers/vee/camel-vee-store.c (vee_get_folder): create->flags.
* providers/pop3/camel-pop3-store.c (get_folder): Changed create
-> flags.
* providers/imap/camel-imap-store.c (get_folder): Added flags
argument.
* providers/mh/camel-mh-folder.c (camel_mh_folder_new): Added
flags argument, and fixed code appropriately.
* providers/mh/camel-mh-store.c (get_folder): Added flags argument.
* camel-folder-search.c (message_body_contains): Perform a regex
match on the contents of messages. This wont quite work yet as
message contents are encoded when written to a stream.
(build_match_regex): Converts a number of strings into a regex
matching pattern, escaping special chars.
(match_message): match a single message from a folder, by uid.
Slow.
(search_body_contains): Changed to support matching where no index
is supplied. Matches are performed by retrieving message
contents, etc.
() WTF? camel should not be including any widget headers.
* providers/mbox/camel-mbox-folder.c (camel_mbox_folder_new):
Added flags argument.
(mbox_refresh_info): Changed into a NOP, the refresh info code
moved into the new function.
(camel_mbox_folder_new): If we have an index requested, build one,
otherwise, remove an old one, or just dont do anything.
* providers/mbox/camel-mbox-store.c (get_folder): Changed create
to flags, changed code to suit.
* camel-store.c (camel_store_get_folder): Changed create to flags.
(get_folder_internal): And here.
(get_folder): And here too.
* camel-store.h (camel_store_get_folder): Change the create
argument to be a flags argument.
svn path=/trunk/; revision=5978
Diffstat (limited to 'camel/providers/mh')
-rw-r--r-- | camel/providers/mh/camel-mh-folder.c | 21 | ||||
-rw-r--r-- | camel/providers/mh/camel-mh-folder.h | 2 | ||||
-rw-r--r-- | camel/providers/mh/camel-mh-store.c | 8 | ||||
-rw-r--r-- | camel/providers/mh/camel-mh-summary.c | 7 |
4 files changed, 24 insertions, 14 deletions
diff --git a/camel/providers/mh/camel-mh-folder.c b/camel/providers/mh/camel-mh-folder.c index c8b0503e95..ccd9d717e9 100644 --- a/camel/providers/mh/camel-mh-folder.c +++ b/camel/providers/mh/camel-mh-folder.c @@ -158,7 +158,7 @@ CamelType camel_mh_folder_get_type(void) } CamelFolder * -camel_mh_folder_new(CamelStore *parent_store, const char *full_name, CamelException *ex) +camel_mh_folder_new(CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex) { CamelFolder *folder; CamelMhFolder *mh_folder; @@ -185,11 +185,20 @@ camel_mh_folder_new(CamelStore *parent_store, const char *full_name, CamelExcept /* if we have no index file, force it */ forceindex = stat(mh_folder->index_file_path, &st) == -1; - - mh_folder->index = ibex_open(mh_folder->index_file_path, O_CREAT | O_RDWR, 0600); - if (mh_folder->index == NULL) { - /* yes, this isn't fatal at all */ - g_warning("Could not open/create index file: %s: indexing not performed", strerror(errno)); + /* check if we need to setup an index */ + if (flags & CAMEL_STORE_FOLDER_BODY_INDEX) { + mh_folder->index = ibex_open(mh_folder->index_file_path, O_CREAT | O_RDWR, 0600); + if (mh_folder->index == NULL) { + /* yes, this isn't fatal at all */ + g_warning("Could not open/create index file: %s: indexing not performed", strerror(errno)); + forceindex = FALSE; + } + } else { + /* if we do have an index file, remove it */ + if (forceindex == FALSE) { + unlink(mh_folder->index_file_path); + } + forceindex = FALSE; } /* no summary (disk or memory), and we're proverbially screwed */ diff --git a/camel/providers/mh/camel-mh-folder.h b/camel/providers/mh/camel-mh-folder.h index 90f2324d11..bdb1588811 100644 --- a/camel/providers/mh/camel-mh-folder.h +++ b/camel/providers/mh/camel-mh-folder.h @@ -62,7 +62,7 @@ typedef struct { } CamelMhFolderClass; /* public methods */ -CamelFolder *camel_mh_folder_new(CamelStore *parent_store, const char *full_name, CamelException *ex); +CamelFolder *camel_mh_folder_new(CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex); /* Standard Camel function */ CamelType camel_mh_folder_get_type(void); diff --git a/camel/providers/mh/camel-mh-store.c b/camel/providers/mh/camel-mh-store.c index c169d878fd..ead6e4f340 100644 --- a/camel/providers/mh/camel-mh-store.c +++ b/camel/providers/mh/camel-mh-store.c @@ -41,7 +41,7 @@ #define CMHF_CLASS(so) CAMEL_MH_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so)) static char *get_name(CamelService * service, gboolean brief); -static CamelFolder *get_folder(CamelStore * store, const char *folder_name, gboolean create, CamelException * ex); +static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex); static void delete_folder(CamelStore * store, const char *folder_name, CamelException * ex); static void rename_folder(CamelStore *store, const char *old_name, const char *new_name, CamelException *ex); static char *get_folder_name(CamelStore * store, const char *folder_name, CamelException * ex); @@ -102,7 +102,7 @@ const gchar *camel_mh_store_get_toplevel_dir(CamelMhStore * store) return url->path; } -static CamelFolder *get_folder(CamelStore * store, const char *folder_name, gboolean create, CamelException * ex) +static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex) { char *name; struct stat st; @@ -118,7 +118,7 @@ static CamelFolder *get_folder(CamelStore * store, const char *folder_name, gboo g_free (name); return NULL; } - if (!create) { + if ((flags & CAMEL_STORE_FOLDER_CREATE) == 0) { camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER, "Folder `%s' does not exist.", folder_name); g_free (name); @@ -141,7 +141,7 @@ static CamelFolder *get_folder(CamelStore * store, const char *folder_name, gboo } g_free(name); - return camel_mh_folder_new (store, folder_name, ex); + return camel_mh_folder_new(store, folder_name, flags, ex); } static void delete_folder(CamelStore * store, const char *folder_name, CamelException * ex) diff --git a/camel/providers/mh/camel-mh-summary.c b/camel/providers/mh/camel-mh-summary.c index 5d304b4a42..ce1d597012 100644 --- a/camel/providers/mh/camel-mh-summary.c +++ b/camel/providers/mh/camel-mh-summary.c @@ -161,7 +161,7 @@ int camel_mh_summary_add(CamelMhSummary * mhs, const char *name, int forceindex mp = camel_mime_parser_new(); camel_mime_parser_scan_from(mp, FALSE); camel_mime_parser_init_with_fd(mp, fd); - if (forceindex || !ibex_contains_name(mhs->index, (char *)name)) { + if (mhs->index && (forceindex || !ibex_contains_name(mhs->index, (char *)name))) { d(printf("forcing indexing of message content\n")); camel_folder_summary_set_index((CamelFolderSummary *)mhs, mhs->index); } else { @@ -180,7 +180,8 @@ static void remove_summary(char *key, CamelMessageInfo *info, CamelMhSummary *mhs) { d(printf("removing message %s from summary\n", key)); - ibex_unindex(mhs->index, info->uid); + if (mhs->index) + ibex_unindex(mhs->index, info->uid); camel_folder_summary_remove((CamelFolderSummary *)mhs, info); } @@ -219,7 +220,7 @@ int camel_mh_summary_check(CamelMhSummary * mhs, int forceindex) } if (c==0) { info = camel_folder_summary_uid((CamelFolderSummary *)mhs, d->d_name); - if (info == NULL || (!ibex_contains_name(mhs->index, d->d_name))) { + if (info == NULL || (mhs->index && (!ibex_contains_name(mhs->index, d->d_name)))) { /* need to add this file to the summary */ if (info != NULL) { g_hash_table_remove(left, info->uid); |