evolution-data-server r8882 - in branches/camel-db-summary/camel/providers: groupwise imap
- From: sragavan svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution-data-server r8882 - in branches/camel-db-summary/camel/providers: groupwise imap
- Date: Sun, 1 Jun 2008 15:09:01 +0000 (UTC)
Author: sragavan
Date: Sun Jun 1 15:08:59 2008
New Revision: 8882
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=8882&view=rev
Log:
Complete IMAP and wrote basic GW support for CamelDS.
Modified:
branches/camel-db-summary/camel/providers/groupwise/camel-groupwise-summary.c
branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c
Modified: branches/camel-db-summary/camel/providers/groupwise/camel-groupwise-summary.c
==============================================================================
--- branches/camel-db-summary/camel/providers/groupwise/camel-groupwise-summary.c (original)
+++ branches/camel-db-summary/camel/providers/groupwise/camel-groupwise-summary.c Sun Jun 1 15:08:59 2008
@@ -53,6 +53,14 @@
static int gw_content_info_save (CamelFolderSummary *s, FILE *out, CamelMessageContentInfo *info) ;
static gboolean gw_info_set_flags(CamelMessageInfo *info, guint32 flags, guint32 set);
+static int summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir);
+static CamelFIRecord * summary_header_to_db (CamelFolderSummary *s);
+static CamelMIRecord * message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info);
+static CamelMessageInfo * message_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
+static int content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir);
+static CamelMessageContentInfo * content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
+
+
static void camel_groupwise_summary_class_init (CamelGroupwiseSummaryClass *klass);
static void camel_groupwise_summary_init (CamelGroupwiseSummary *obj);
@@ -64,6 +72,8 @@
CamelType
+#include <fcntl.h>
+#include <fcntl.h>
camel_groupwise_summary_get_type (void)
{
static CamelType type = CAMEL_INVALID_TYPE;
@@ -112,6 +122,14 @@
cfs_class->content_info_load = gw_content_info_load;
cfs_class->content_info_save = gw_content_info_save;
cfs_class->info_set_flags = gw_info_set_flags;
+
+ cfs_class->summary_header_to_db = summary_header_to_db;
+ cfs_class->summary_header_from_db = summary_header_from_db;
+ cfs_class->message_info_to_db = message_info_to_db;
+ cfs_class->message_info_from_db = message_info_from_db;
+ cfs_class->content_info_to_db = content_info_to_db;
+ cfs_class->content_info_from_db = content_info_from_db;
+
}
@@ -157,6 +175,12 @@
}
static int
+summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir)
+{
+ return 0;
+}
+
+static int
gw_summary_header_load (CamelFolderSummary *s, FILE *in)
{
CamelGroupwiseSummary *ims = CAMEL_GROUPWISE_SUMMARY (s);
@@ -173,6 +197,13 @@
return 0 ;
}
+static CamelFIRecord *
+summary_header_to_db (CamelFolderSummary *s)
+{
+ CamelFIRecord *fir;
+ GString *str = g_string_new (NULL);
+
+}
static int
gw_summary_header_save (CamelFolderSummary *s, FILE *out)
Modified: branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c
==============================================================================
--- branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c (original)
+++ branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c Sun Jun 1 15:08:59 2008
@@ -38,6 +38,9 @@
#define CAMEL_IMAP_SUMMARY_VERSION (3)
+#define EXTRACT_FIRST_DIGIT(val) val=strtoul (part, &part, 10);
+#define EXTRACT_DIGIT(val) part++; val=strtoul (part, &part, 10);
+
static int summary_header_load (CamelFolderSummary *, FILE *);
static int summary_header_save (CamelFolderSummary *, FILE *);
@@ -49,6 +52,14 @@
static int content_info_save (CamelFolderSummary *s, FILE *out,
CamelMessageContentInfo *info);
+static int summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir);
+static CamelFIRecord * summary_header_to_db (CamelFolderSummary *s);
+static CamelMIRecord * message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info);
+static CamelMessageInfo * message_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
+static int content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir);
+static CamelMessageContentInfo * content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
+
+
static void camel_imap_summary_class_init (CamelImapSummaryClass *klass);
static void camel_imap_summary_init (CamelImapSummary *obj);
@@ -103,6 +114,13 @@
cfs_class->message_info_save = message_info_save;
cfs_class->content_info_load = content_info_load;
cfs_class->content_info_save = content_info_save;
+
+ cfs_class->summary_header_to_db = summary_header_to_db;
+ cfs_class->summary_header_from_db = summary_header_from_db;
+ cfs_class->message_info_to_db = message_info_to_db;
+ cfs_class->message_info_from_db = message_info_from_db;
+ cfs_class->content_info_to_db = content_info_to_db;
+ cfs_class->content_info_from_db = content_info_from_db;
cfs_class->info_set_user_flag = info_set_user_flag;
}
@@ -146,6 +164,34 @@
}
static int
+summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir)
+{
+ CamelImapSummary *ims = CAMEL_IMAP_SUMMARY (s);
+ char *part;
+
+ if (camel_imap_summary_parent->summary_header_from_db (s, mir) == -1)
+ return -1;
+
+ part = mir->bdata;
+
+ if (part) {
+ EXTRACT_FIRST_DIGIT (ims->version)
+ }
+
+ if (part) {
+ EXTRACT_DIGIT (ims->validity)
+ }
+
+ if (ims->version > CAMEL_IMAP_SUMMARY_VERSION) {
+ g_warning("Unkown summary version\n");
+ errno = EINVAL;
+ return -1;
+ }
+
+ return 0;
+}
+
+static int
summary_header_load (CamelFolderSummary *s, FILE *in)
{
CamelImapSummary *ims = CAMEL_IMAP_SUMMARY (s);
@@ -181,6 +227,25 @@
return 0;
}
+static CamelFIRecord *
+summary_header_to_db (CamelFolderSummary *s)
+{
+ CamelImapSummary *ims = CAMEL_IMAP_SUMMARY(s);
+ struct _CamelFIRecord *fir;
+ GString *str = g_string_new (NULL);
+
+ fir = camel_imap_summary_parent->summary_header_to_db (s);
+ if (!fir)
+ return NULL;
+
+ g_string_append_printf (str, "%d %u", CAMEL_IMAP_SUMMARY_VERSION, ims->validity);
+
+ fir->bdata = str->str;
+ g_string_free (str, FALSE);
+
+ return fir;
+}
+
static int
summary_header_save (CamelFolderSummary *s, FILE *out)
{
@@ -195,6 +260,22 @@
}
static CamelMessageInfo *
+message_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir)
+{
+ CamelMessageInfo *info;
+ CamelImapMessageInfo *iinfo;
+
+ info = camel_imap_summary_parent->message_info_from_db (s, mir);
+ if (info) {
+ char *part = mir->bdata;
+ iinfo = (CamelImapMessageInfo *)info;
+ EXTRACT_FIRST_DIGIT (iinfo->server_flags)
+ }
+
+ return info;
+}
+
+static CamelMessageInfo *
message_info_load (CamelFolderSummary *s, FILE *in)
{
CamelMessageInfo *info;
@@ -214,6 +295,19 @@
return NULL;
}
+static CamelMIRecord *
+message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info)
+{
+ CamelImapMessageInfo *iinfo = (CamelImapMessageInfo *)info;
+ struct _CamelMIRecord *mir;
+
+ mir = camel_imap_summary_parent->message_info_to_db (s, info);
+ if (mir)
+ mir->bdata = g_strdup_printf ("%u", iinfo->server_flags);
+
+ return mir;
+}
+
static int
message_info_save (CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
{
@@ -240,6 +334,21 @@
}
static CamelMessageContentInfo *
+content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir)
+{
+ char *part = mir->cinfo;
+ guint32 type=0;
+
+ if (part) {
+ EXTRACT_FIRST_DIGIT (type);
+ }
+ if (type)
+ return camel_imap_summary_parent->content_info_from_db (s, mir);
+ else
+ return camel_folder_summary_content_info_new (s);
+}
+
+static CamelMessageContentInfo *
content_info_load (CamelFolderSummary *s, FILE *in)
{
if (fgetc (in))
@@ -249,6 +358,18 @@
}
static int
+content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir)
+{
+ if (info->type) {
+ mir->cinfo = g_strdup ("1");
+ return camel_imap_summary_parent->content_info_to_db (s, info, mir);
+ } else {
+ mir->cinfo = g_strdup ("0");
+ return 0;
+ }
+}
+
+static int
content_info_save (CamelFolderSummary *s, FILE *out,
CamelMessageContentInfo *info)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]