aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-folder-summary.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@HelixCode.com>2000-10-04 23:56:32 +0800
committerMichael Zucci <zucchi@src.gnome.org>2000-10-04 23:56:32 +0800
commit47a2f8444fed208beaa353c9d1da69c970e91d4c (patch)
tree9b5f06c358ccbd0bdcb8cd1fcf9b07a5aeac9a28 /camel/camel-folder-summary.c
parent58eba683f83f3b6e2ca023c34e6eae647d929409 (diff)
downloadgsoc2013-evolution-47a2f8444fed208beaa353c9d1da69c970e91d4c.tar
gsoc2013-evolution-47a2f8444fed208beaa353c9d1da69c970e91d4c.tar.gz
gsoc2013-evolution-47a2f8444fed208beaa353c9d1da69c970e91d4c.tar.bz2
gsoc2013-evolution-47a2f8444fed208beaa353c9d1da69c970e91d4c.tar.lz
gsoc2013-evolution-47a2f8444fed208beaa353c9d1da69c970e91d4c.tar.xz
gsoc2013-evolution-47a2f8444fed208beaa353c9d1da69c970e91d4c.tar.zst
gsoc2013-evolution-47a2f8444fed208beaa353c9d1da69c970e91d4c.zip
Handle the case where ct != NULL, but type and subtype are, and also match
2000-10-04 Not Zed <NotZed@HelixCode.com> * camel-mime-utils.c (header_content_type_is): Handle the case where ct != NULL, but type and subtype are, and also match that against text/plain. * camel-folder-summary.c: Bump summary file version. (message_info_save): Save the size from the messageinfo. (message_info_load): Load the size from the summary file. (message_info_load): Fixed up the time_t saving/loading. There was a reason the warning was left there ... obviously nobody could read the comment "/* warnings, leave them here */", why do i even bother. (camel_folder_summary_decode_time_t): Decode a time_t value from the summary file. (camel_folder_summary_encode_time_t): Encode a time_t value to the summary file. svn path=/trunk/; revision=5706
Diffstat (limited to 'camel/camel-folder-summary.c')
-rw-r--r--camel/camel-folder-summary.c47
1 files changed, 35 insertions, 12 deletions
diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c
index 2653836b13..5bbb240be1 100644
--- a/camel/camel-folder-summary.c
+++ b/camel/camel-folder-summary.c
@@ -48,7 +48,7 @@
extern int strdup_count, malloc_count, free_count;
#endif
-#define CAMEL_FOLDER_SUMMARY_VERSION (7)
+#define CAMEL_FOLDER_SUMMARY_VERSION (8)
struct _CamelFolderSummaryPrivate {
GHashTable *filter_charset; /* CamelMimeFilterCharset's indexed by source charset */
@@ -541,7 +541,7 @@ camel_folder_summary_encode_uint32(FILE *out, guint32 value)
int
camel_folder_summary_decode_uint32(FILE *in, guint32 *dest)
{
- gint32 value=0, v;
+ guint32 value=0, v;
/* until we get the last byte, keep decoding 7 bits at a time */
while ( ((v = fgetc(in)) & 0x80) == 0 && v!=EOF) {
@@ -583,6 +583,33 @@ camel_folder_summary_decode_fixed_int32(FILE *in, gint32 *dest)
}
}
+int
+camel_folder_summary_encode_time_t(FILE *out, time_t value)
+{
+ int i;
+
+ for (i=sizeof(time_t)-1;i>=0;i--) {
+ if (fputc((value >> (i*8)) & 0xff, out) == -1)
+ return -1;
+ }
+ return 0;
+}
+
+int
+camel_folder_summary_decode_time_t(FILE *in, time_t *dest)
+{
+ time_t save = 0;
+ unsigned int v;
+ int i = sizeof(time_t) - 1;
+
+ while ( i>=0 && (v = fgetc(in)) != EOF) {
+ save |= v << (i*8);
+ i--;
+ }
+ *dest = save;
+ return 0;
+}
+
/* should be sorted, for binary search */
/* This is a tokenisation mechanism for strings written to the
summary - to save space.
@@ -961,7 +988,6 @@ static CamelMessageInfo *
message_info_load(CamelFolderSummary *s, FILE *in)
{
CamelMessageInfo *mi;
- guint32 udate_sent, udate_received;
guint count;
int i;
@@ -971,18 +997,15 @@ message_info_load(CamelFolderSummary *s, FILE *in)
camel_folder_summary_decode_string(in, &mi->uid);
camel_folder_summary_decode_uint32(in, &mi->flags);
- camel_folder_summary_decode_uint32(in, &udate_sent); /* warnings, leave them here */
- camel_folder_summary_decode_uint32(in, &udate_received);
-/* ms->xev_offset = camel_folder_summary_decode_uint32(in);*/
+ camel_folder_summary_decode_uint32(in, &mi->size);
+ camel_folder_summary_decode_time_t(in, &mi->date_sent);
+ camel_folder_summary_decode_time_t(in, &mi->date_received);
camel_folder_summary_decode_string(in, &mi->subject);
camel_folder_summary_decode_string(in, &mi->from);
camel_folder_summary_decode_string(in, &mi->to);
camel_folder_summary_decode_string(in, &mi->cc);
mi->content = NULL;
- mi->date_sent = (time_t) udate_sent;
- mi->date_received = (time_t) udate_received;
-
camel_folder_summary_decode_string(in, &mi->message_id);
camel_folder_summary_decode_uint32(in, &count);
@@ -1025,9 +1048,9 @@ message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *mi)
camel_folder_summary_encode_string(out, mi->uid);
camel_folder_summary_encode_uint32(out, mi->flags);
- camel_folder_summary_encode_uint32(out, mi->date_sent);
- camel_folder_summary_encode_uint32(out, mi->date_received);
-/* camel_folder_summary_encode_uint32(out, ms->xev_offset);*/
+ camel_folder_summary_encode_uint32(out, mi->size);
+ camel_folder_summary_encode_time_t(out, mi->date_sent);
+ camel_folder_summary_encode_time_t(out, mi->date_received);
camel_folder_summary_encode_string(out, mi->subject);
camel_folder_summary_encode_string(out, mi->from);
camel_folder_summary_encode_string(out, mi->to);