Changed to have the 'have_mlist' bit be a summary flag rather than a new
authorJeffrey Stedfast <fejj@novell.com>
Tue, 1 Feb 2005 21:26:30 +0000 (21:26 +0000)
committerJeffrey Stedfast <fejj@src.gnome.org>
Tue, 1 Feb 2005 21:26:30 +0000 (21:26 +0000)
2005-02-01  Jeffrey Stedfast  <fejj@novell.com>

* camel-imap4-summary.c (imap4_header_load): Changed to have the
'have_mlist' bit be a summary flag rather than a new value stored
in the summary header.
(imap4_header_save): No longer need to save the have_mlist value
ourselves.
(camel_imap4_summary_flush_updates): Updated to use summary flags
for have_mlist instead.

camel/providers/imap4/ChangeLog
camel/providers/imap4/camel-imap4-summary.c
camel/providers/imap4/camel-imap4-summary.h

index 19d3501..9e16398 100644 (file)
@@ -1,5 +1,15 @@
 2005-02-01  Jeffrey Stedfast  <fejj@novell.com>
 
+       * camel-imap4-summary.c (imap4_header_load): Changed to have the
+       'have_mlist' bit be a summary flag rather than a new value stored
+       in the summary header.
+       (imap4_header_save): No longer need to save the have_mlist value
+       ourselves.
+       (camel_imap4_summary_flush_updates): Updated to use summary flags
+       for have_mlist instead.
+
+2005-02-01  Jeffrey Stedfast  <fejj@novell.com>
+
        * camel-imap4-provider.c: Added command option.
        Reset back to imap4:// uris.
 
index 6b96148..01b49e2 100644 (file)
@@ -52,7 +52,7 @@
 
 #define d(x) x
 
-#define CAMEL_IMAP4_SUMMARY_VERSION  2
+#define CAMEL_IMAP4_SUMMARY_VERSION  3
 
 static void camel_imap4_summary_class_init (CamelIMAP4SummaryClass *klass);
 static void camel_imap4_summary_init (CamelIMAP4Summary *summary, CamelIMAP4SummaryClass *klass);
@@ -118,7 +118,7 @@ camel_imap4_summary_init (CamelIMAP4Summary *summary, CamelIMAP4SummaryClass *kl
        folder_summary->message_info_size = sizeof (CamelIMAP4MessageInfo);
        folder_summary->content_info_size = sizeof (CamelIMAP4MessageContentInfo);
        
-       summary->have_mlist = TRUE;
+       ((CamelFolderSummary *) summary)->flags |= CAMEL_IMAP4_SUMMARY_HAVE_MLIST;
        
        summary->update_flags = TRUE;
        summary->uidvalidity_changed = FALSE;
@@ -159,14 +159,17 @@ imap4_header_load (CamelFolderSummary *summary, FILE *fin)
                return -1;
        }
        
-       if (imap4_summary->version >= 2) {
+       if (imap4_summary->version == 2) {
                /* check that we have Mailing-List info */
                int have_mlist;
                
                if (camel_file_util_decode_fixed_int32 (fin, &have_mlist) == -1)
                        return -1;
                
-               imap4_summary->have_mlist = have_mlist ? TRUE : FALSE;
+               if (have_mlist)
+                       summary->flags |= CAMEL_IMAP4_SUMMARY_HAVE_MLIST;
+               else
+                       summary->flags ^= CAMEL_IMAP4_SUMMARY_HAVE_MLIST;
        }
        
        if (camel_file_util_decode_fixed_int32 (fin, &imap4_summary->uidvalidity) == -1)
@@ -186,9 +189,6 @@ imap4_header_save (CamelFolderSummary *summary, FILE *fout)
        if (camel_file_util_encode_fixed_int32 (fout, CAMEL_IMAP4_SUMMARY_VERSION) == -1)
                return -1;
        
-       if (camel_file_util_encode_fixed_int32 (fout, imap4_summary->have_mlist) == -1)
-               return -1;
-       
        if (camel_file_util_encode_fixed_int32 (fout, imap4_summary->uidvalidity) == -1)
                return -1;
        
@@ -1447,12 +1447,16 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
        /* FIXME: what do we do if replaying the journal fails? */
        camel_offline_journal_replay (journal, NULL);
        
-       if (imap4_folder->enable_mlist && !imap4_summary->have_mlist) {
+       if (imap4_folder->enable_mlist && !(summary->flags & CAMEL_IMAP4_SUMMARY_HAVE_MLIST)) {
                /* need to refetch all summary info to get info->mlist */
                imap4_summary_clear (summary, FALSE);
        }
        
-       imap4_summary->have_mlist = imap4_folder->enable_mlist;
+       summary->flags = (summary->flags & ~CAMEL_IMAP4_SUMMARY_HAVE_MLIST);
+       if (imap4_folder->enable_mlist)
+               summary->flags |= CAMEL_IMAP4_SUMMARY_HAVE_MLIST;
+       else
+               summary->flags ^= CAMEL_IMAP4_SUMMARY_HAVE_MLIST;
        
        engine = ((CamelIMAP4Store *) summary->folder->parent_store)->engine;
        scount = camel_folder_summary_count (summary);
index 12b39c9..77f53e7 100644 (file)
@@ -46,6 +46,10 @@ typedef struct _CamelIMAP4SummaryClass CamelIMAP4SummaryClass;
 
 #define CAMEL_IMAP4_MESSAGE_RECENT (1 << 17)
 
+enum {
+       CAMEL_IMAP4_SUMMARY_HAVE_MLIST = (1 << 8)
+};
+
 struct _CamelIMAP4MessageInfo {
        CamelMessageInfoBase info;
        
@@ -68,8 +72,6 @@ struct _CamelIMAP4Summary {
        
        guint32 uidvalidity;
        
-       guint have_mlist:1;
-       
        guint uidvalidity_changed:1;
        guint update_flags:1;
 };