From 0a7400e900f9235cf6ef73a8978433178a5b8f0c Mon Sep 17 00:00:00 2001 From: Not Zed Date: Thu, 3 Jun 2004 09:29:08 +0000 Subject: only save the summary, don't update from server, thats what refresh info 2004-06-03 Not Zed * providers/nntp/camel-nntp-folder.c (nntp_folder_sync_online): only save the summary, don't update from server, thats what refresh info does. (nntp_folder_download_message): fix exception handling. (nntp_folder_cache_message): same. (nntp_folder_get_message): ditto, plus major cleanup. (nntp_folder_download_message): take combined uid so it can cache and lookup properly. duh. * providers/nntp/camel-nntp-store.c (nntp_store_get_subscribed_folder_info): if not fast, then open the folder, and update it. Yeah i've given up trying to worry about performance vs usability. * providers/nntp/camel-nntp-summary.c (camel_nntp_summary_check): update the storesummary if we update the folder summary. Hmm, isn't duplicated data meant to be a bad thing? :P * providers/nntp/camel-nntp-store.c (camel_nntp_store_set_folder): removed, now handled by nntp_command. (nntp_connected): removed, now handled by nntp_command. * camel-string-utils.c (camel_tolower): added ascii to-lower function. (camel_toupper): and upper, for completeness. * camel-store-summary.c (CAMEL_STORE_SUMMARY_VERSION): bumped file version by 1. This is a mess, version 1 files treated the bitfield 'flags' with bit number values not bits. Messy. * providers/nntp/camel-nntp-store-summary.c (store_info_save): write last/first count. (CAMEL_NNTP_STORE_SUMMARY_VERSION): bump version to 1. (store_info_load): if we're loading >= version 1, then load last/first counts. * providers/nntp/camel-nntp-store.c (nntp_store_get_folder_info_all): pass the whole line to store_info_from_line, dont strip last/first info. (nntp_store_info_update): renamed from info_new_from_line. only add if not present. handle updates, try and handle unread counts and readonly status. 2004-06-02 Not Zed * providers/nntp/camel-nntp-store.c: setup xover once we've started. * providers/nntp/camel-nntp-summary.c: (xover_setup): moved to nntp store. * providers/nntp/camel-nntp-folder.c (folder_check) (folder_check_free, camel_nntp_folder_new): remove async summary stuff. * providers/nntp/camel-nntp-store.c (camel_nntp_command): take exception argument again, and folder argument. do retry logic and auth logic differently. (camel_nntp_raw_command): raw command interface, dont try reconnect or anything fancy. pass i/o errors straight out, etc. (camel_nntp_try_authenticate): change to return return codes & take exception. * providers/nntp/camel-nntp-summary.c (camel_nntp_summary_new): just take path argument. (camel_nntp_summary_check): take a store, and a folder name. (add_range_head, add_range_xover): remove the time based update events, they never had any effect anyway. Take store argument. (xover_setup): take store argument. * camel-folder-search.c (search_match_threads): remove debug. svn path=/trunk/; revision=26164 --- camel/camel-store-summary.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'camel/camel-store-summary.c') diff --git a/camel/camel-store-summary.c b/camel/camel-store-summary.c index 86e42fc98c..982d0ed2b1 100644 --- a/camel/camel-store-summary.c +++ b/camel/camel-store-summary.c @@ -47,9 +47,10 @@ /* possible versions, for versioning changes */ #define CAMEL_STORE_SUMMARY_VERSION_0 (1) +#define CAMEL_STORE_SUMMARY_VERSION_2 (2) /* current version */ -#define CAMEL_STORE_SUMMARY_VERSION (1) +#define CAMEL_STORE_SUMMARY_VERSION (2) #define _PRIVATE(o) (((CamelStoreSummary *)(o))->priv) @@ -822,6 +823,23 @@ store_info_load(CamelStoreSummary *s, FILE *in) camel_file_util_decode_uint32(in, &mi->unread); camel_file_util_decode_uint32(in, &mi->total); + /* Ok, brown paper bag bug - prior to version 2 of the file, flags are + stored using the bit number, not the bit. Try to recover as best we can */ + if (s->version < CAMEL_STORE_SUMMARY_VERSION_2) { + guint32 flags = 0; + + if (mi->flags & 1) + flags |= CAMEL_STORE_INFO_FOLDER_NOSELECT; + if (mi->flags & 2) + flags |= CAMEL_STORE_INFO_FOLDER_READONLY; + if (mi->flags & 3) + flags |= CAMEL_STORE_INFO_FOLDER_SUBSCRIBED; + if (mi->flags & 4) + flags |= CAMEL_STORE_INFO_FOLDER_FLAGGED; + + mi->flags = flags; + } + if (!ferror(in)) return mi; -- cgit v1.2.3