diff options
Diffstat (limited to 'camel/providers/local/camel-local-summary.c')
-rw-r--r-- | camel/providers/local/camel-local-summary.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/camel/providers/local/camel-local-summary.c b/camel/providers/local/camel-local-summary.c index 42534b361d..a1f4831675 100644 --- a/camel/providers/local/camel-local-summary.c +++ b/camel/providers/local/camel-local-summary.c @@ -34,12 +34,16 @@ #include "camel-local-summary.h" #include "camel/camel-mime-message.h" #include "camel/camel-stream-null.h" +#include "camel/camel-file-utils.h" #define w(x) #define io(x) #define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/ -#define CAMEL_LOCAL_SUMMARY_VERSION (0x200) +#define CAMEL_LOCAL_SUMMARY_VERSION (1) + +static int summary_header_load (CamelFolderSummary *, FILE *); +static int summary_header_save (CamelFolderSummary *, FILE *); static CamelMessageInfo * message_info_new (CamelFolderSummary *, struct _camel_header_raw *); @@ -81,6 +85,9 @@ camel_local_summary_class_init(CamelLocalSummaryClass *klass) camel_local_summary_parent = CAMEL_FOLDER_SUMMARY_CLASS(camel_type_get_global_classfuncs(camel_folder_summary_get_type())); + sklass->summary_header_load = summary_header_load; + sklass->summary_header_save = summary_header_save; + sklass->message_info_new = message_info_new; klass->load = local_summary_load; @@ -577,6 +584,35 @@ local_summary_decode_x_evolution(CamelLocalSummary *cls, const char *xev, CamelM return 0; } +static int +summary_header_load(CamelFolderSummary *s, FILE *in) +{ + CamelLocalSummary *cls = (CamelLocalSummary *)s; + + /* We dont actually add our own headers, but version that we don't anyway */ + + if (((CamelFolderSummaryClass *)camel_local_summary_parent)->summary_header_load(s, in) == -1) + return -1; + + /* Legacy version, version is in summary only */ + if ((s->version & 0xfff) == 0x20c) + return 0; + + /* otherwise load the version number */ + return camel_file_util_decode_fixed_int32(in, &cls->version); +} + +static int +summary_header_save(CamelFolderSummary *s, FILE *out) +{ + /*CamelLocalSummary *cls = (CamelLocalSummary *)s;*/ + + if (((CamelFolderSummaryClass *)camel_local_summary_parent)->summary_header_save(s, out) == -1) + return -1; + + return camel_file_util_encode_fixed_int32(out, CAMEL_LOCAL_SUMMARY_VERSION); +} + static CamelMessageInfo * message_info_new(CamelFolderSummary *s, struct _camel_header_raw *h) { |