diff options
-rw-r--r-- | camel/ChangeLog | 19 | ||||
-rw-r--r-- | camel/camel-folder-summary.c | 5 | ||||
-rw-r--r-- | camel/camel-folder-summary.h | 3 | ||||
-rw-r--r-- | camel/providers/local/camel-maildir-summary.c | 36 |
4 files changed, 41 insertions, 22 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 166b0ac35b..455ba9e9ee 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,22 @@ +2001-07-05 Not Zed <NotZed@Ximian.com> + + * camel-folder-summary.c + (camel_folder_summary_info_new_from_message): When indexing a new + record, create a pseudo word 'ibexindexed' so we can always tell + that a message has already been idnexed, even if it contains no + words of its own. Things like maildir use this check to see if + its already been processed, and it matters if it is incorrect in + this case (not just wasted cycles). + + (camel_folder_summary_info_new_from_parser): And same here. + + * providers/local/camel-maildir-summary.c (maildir_summary_sync): + Changed the logicfor epoolv code to be different, we dont need to + update hash references or any tricky stuff. + (maildir_summary_check): Samehere. + + * camel-folder-summary.h: Removed include of e-memory.h. + 2001-07-03 Joe Shaw <joe@ximian.com> * providers/nntp/camel-nntp-resp-codes.h: Added NNTP_NO_PERMISSION diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c index e89915326e..bd085b4b3f 100644 --- a/camel/camel-folder-summary.c +++ b/camel/camel-folder-summary.c @@ -844,6 +844,7 @@ CamelMessageInfo *camel_folder_summary_info_new_from_parser(CamelFolderSummary * p->filter_index = camel_mime_filter_index_new_ibex(p->index); camel_mime_filter_index_set_name(p->filter_index, (char *)camel_message_info_uid(info)); ibex_unindex(p->index, (char *)camel_message_info_uid(info)); + ibex_index_buffer(p->index, (char *)camel_message_info_uid(info), "ibexindexed", strlen("ibexindexed"), NULL); } /* always scan the content info, even if we dont save it */ @@ -876,8 +877,10 @@ CamelMessageInfo *camel_folder_summary_info_new_from_message(CamelFolderSummary * know if we are going to store this in the summary, but no matter */ summary_assign_uid(s, info); - if (p->index) + if (p->index) { ibex_unindex(p->index, (char *)camel_message_info_uid(info)); + ibex_index_buffer(p->index, (char *)camel_message_info_uid(info), "ibexindexed", strlen("ibexindexed"), NULL); + } info->content = summary_build_content_info_message(s, info, (CamelMimePart *)msg); /* FIXME: calculate the size as part of build_content_info_message */ diff --git a/camel/camel-folder-summary.h b/camel/camel-folder-summary.h index 6aa8e9525d..5fc675b5fd 100644 --- a/camel/camel-folder-summary.h +++ b/camel/camel-folder-summary.h @@ -97,7 +97,6 @@ typedef struct _CamelSummaryReferences { #define DOEPOOLV #if defined (DOEPOOLV) || defined (DOESTRV) -#include "../e-util/e-memory.h" /* string array indices */ enum { @@ -115,7 +114,7 @@ enum { struct _CamelMessageInfo { /* public fields */ #ifdef DOEPOOLV - EPoolv *strings; + struct _EPoolv *strings; #elif defined (DOESTRV) struct _EStrv *strings; /* all strings packed into a single compact array */ #else diff --git a/camel/providers/local/camel-maildir-summary.c b/camel/providers/local/camel-maildir-summary.c index ee9411c297..bc7bf790bd 100644 --- a/camel/providers/local/camel-maildir-summary.c +++ b/camel/providers/local/camel-maildir-summary.c @@ -580,26 +580,23 @@ maildir_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changes, Ca filename = camel_maildir_info_filename(mdi); /* TODO: only store the extension in the mdi->filename struct, not the whole lot */ if (filename == NULL || strcmp(filename, d->d_name) != 0) { -#if defined (DOEPOOLV) || defined (DOESTRV) +#ifdef DOESTRV #warning "cannot modify the estrv after its been setup, for mt-safe code" - d(printf("filename changed: %s to %s\n", filename, d->d_name)); - - /* need to update the summary hash string reference since it might (will) change */ CAMEL_SUMMARY_LOCK(s, summary_lock); - g_hash_table_remove(s->messages_uid, uid); -#ifdef DOEPOOLV - info->strings = e_poolv_set(info->strings, CAMEL_MAILDIR_INFO_FILENAME, d->d_name, FALSE); -#else + /* need to update the summary hash ref */ + g_hash_table_remove(s->messages_uid, camel_message_info_uid(info)); info->strings = e_strv_set_ref(info->strings, CAMEL_MAILDIR_INFO_FILENAME, d->d_name); - /* we need to re-pack as well */ info->strings = e_strv_pack(info->strings); -#endif /* DOEPOOLV */ g_hash_table_insert(s->messages_uid, (char *)camel_message_info_uid(info), info); CAMEL_SUMMARY_UNLOCK(s, summary_lock); -#else /* defined (DOEPOOLV) || defined (DOESTRV) */ +#else +# ifdef DOEPOOLV + info->strings = e_poolv_set(info->strings, CAMEL_MAILDIR_INFO_FILENAME, d->d_name, FALSE); +# else g_free(mdi->filename); mdi->filename = g_strdup(d->d_name); -#endif +# endif +#endif } camel_folder_summary_info_free((CamelFolderSummary *)cls, info); } @@ -681,7 +678,7 @@ maildir_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChange int count, i; CamelMessageInfo *info; CamelMaildirMessageInfo *mdi; -#if defined (DOEPOOLV) || defined (DOESTRV) +#ifdef DOESTRV CamelFolderSummary *s = (CamelFolderSummary *)cls; #endif char *name; @@ -732,22 +729,23 @@ maildir_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChange /* TODO: If this is made mt-safe, then this code could be a problem, since the estrv is being modified. Sigh, this may mean the maildir name has to be cached another way */ -#if defined (DOEPOOLV) || defined (DOESTRV) +#ifdef DOESTRV #warning "cannot modify the estrv after its been setup, for mt-safe code" CAMEL_SUMMARY_LOCK(s, summary_lock); /* need to update the summary hash ref */ g_hash_table_remove(s->messages_uid, camel_message_info_uid(info)); -#ifdef DOEPOOLV - info->strings = e_poolv_set(info->strings, CAMEL_MAILDIR_INFO_FILENAME, newname, TRUE); -#else info->strings = e_strv_set_ref_free(info->strings, CAMEL_MAILDIR_INFO_FILENAME, newname); info->strings = e_strv_pack(info->strings); -#endif /* DOEPOOLV */ g_hash_table_insert(s->messages_uid, (char *)camel_message_info_uid(info), info); CAMEL_SUMMARY_UNLOCK(s, summary_lock); -#else /* defined (DOEPOOLV) || defined (DOESTRV) */ +#else +# ifdef DOEPOOLV + info->strings = e_poolv_set(info->strings, CAMEL_MAILDIR_INFO_FILENAME, newname, TRUE); + g_free(newname); +# else g_free(mdi->filename); mdi->filename = newname; +# endif #endif } g_free(name); |