OBS User unknown 2007-12-19 13:43:47 +00:00 committed by Git OBS Bridge
parent 7cdd7a2d5d
commit 81b04d6655
87 changed files with 1230 additions and 32472 deletions

View File

@ -1,29 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-summary.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-summary.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -p -r1.10 -r1.11
--- camel/providers/groupwise/camel-groupwise-summary.c 9 Nov 2005 14:23:44 -0000 1.10
+++ camel/providers/groupwise/camel-groupwise-summary.c 20 Apr 2006 07:47:21 -0000 1.11
@@ -330,15 +330,17 @@ groupwise_summary_clear (CamelFolderSumm
CamelFolderChangeInfo *changes;
CamelMessageInfo *info;
int i, count;
+ const char *uid;
changes = camel_folder_change_info_new ();
count = camel_folder_summary_count (summary);
for (i = 0; i < count; i++) {
if (!(info = camel_folder_summary_index (summary, i)))
continue;
-
- camel_folder_change_info_remove_uid (changes, camel_message_info_uid (info));
- camel_folder_summary_remove(summary, info);
+
+ uid = camel_message_info_uid (info);
+ camel_folder_change_info_remove_uid (changes, uid);
+ camel_folder_summary_remove_uid (summary, uid);
camel_message_info_free(info);
}

View File

@ -1,16 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
retrieving revision 1.99
diff -u -p -r1.99 camel-groupwise-store.c
--- camel/providers/groupwise/camel-groupwise-store.c 6 Apr 2006 05:57:40 -0000 1.99
+++ camel/providers/groupwise/camel-groupwise-store.c 20 Apr 2006 09:05:34 -0000
@@ -224,7 +224,7 @@ groupwise_auth_loop (CamelService *servi
}
if (!E_IS_GW_CONNECTION(priv->cnc)) {
errbuf = g_strdup_printf (_("Unable to authenticate "
- "to GroupWise server."));
+ "to GroupWise server. "));
camel_exception_clear (ex);
} else

View File

@ -1,79 +0,0 @@
Index: servers/exchange/lib/e2k-context.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-context.c,v
retrieving revision 1.6
diff -u -p -r1.6 e2k-context.c
--- servers/exchange/lib/e2k-context.c 13 Dec 2005 03:54:28 -0000 1.6
+++ servers/exchange/lib/e2k-context.c 24 Feb 2006 21:58:51 -0000
@@ -110,6 +110,9 @@ struct _E2kContextPrivate {
#define E2K_CONTEXT_MIN_BATCH_SIZE 25
#define E2K_CONTEXT_MAX_BATCH_SIZE 100
+/* For soup sync session timeout */
+#define E2K_SOUP_SESSION_TIMEOUT 30
+
#ifdef E2K_DEBUG
char *e2k_debug;
int e2k_debug_level;
@@ -357,6 +360,7 @@ e2k_context_set_auth (E2kContext *ctx, c
const char *domain, const char *authmech,
const char *password)
{
+ guint timeout = E2K_SOUP_SESSION_TIMEOUT;
g_return_if_fail (E2K_IS_CONTEXT (ctx));
@@ -381,8 +385,15 @@ e2k_context_set_auth (E2kContext *ctx, c
if (ctx->priv->async_session)
g_object_unref (ctx->priv->async_session);
+ /* Set a default timeout value of 30 seconds.
+ FIXME: Make timeout configurable
+ */
+ if (g_getenv ("SOUP_SESSION_TIMEOUT"))
+ timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
+
ctx->priv->session = soup_session_sync_new_with_options (
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
+ SOUP_SESSION_TIMEOUT, timeout,
NULL);
g_signal_connect (ctx->priv->session, "authenticate",
G_CALLBACK (session_authenticate), ctx);
Index: groupwise/e-gw-connection.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.c,v
retrieving revision 1.138
diff -u -p -r1.138 e-gw-connection.c
--- servers/groupwise/e-gw-connection.c 23 Jan 2006 11:07:49 -0000 1.138
+++ servers/groupwise/e-gw-connection.c 24 Feb 2006 21:58:51 -0000
@@ -34,6 +34,8 @@
#include "e-gw-message.h"
#include "e-gw-filter.h"
+/* For soup sync session timeout */
+#define GW_SOUP_SESSION_TIMEOUT 30
static GObjectClass *parent_class = NULL;
static GHashTable *loaded_connections_permissions = NULL;
@@ -355,13 +357,20 @@ static void
e_gw_connection_init (EGwConnection *cnc, EGwConnectionClass *klass)
{
EGwConnectionPrivate *priv;
+ guint timeout = GW_SOUP_SESSION_TIMEOUT;
/* allocate internal structure */
priv = g_new0 (EGwConnectionPrivate, 1);
cnc->priv = priv;
+ /* Set a default timeout value of 30 seconds.
+ FIXME: Make timeout configurable
+ */
+ if (g_getenv ("SOUP_SESSION_TIMEOUT"))
+ timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
+
/* create the SoupSession for this connection */
- priv->soup_session = soup_session_sync_new ();
+ priv->soup_session = soup_session_sync_new_with_options (SOUP_SESSION_TIMEOUT, timeout, NULL);
priv->reauth_mutex = g_mutex_new ();
priv->categories_by_id = NULL;
priv->categories_by_name = NULL;

View File

@ -1,559 +0,0 @@
Index: camel/camel-file-utils.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/camel-file-utils.c,v
retrieving revision 1.16
diff -u -p -r1.16 camel-file-utils.c
--- camel/camel-file-utils.c 10 Jan 2006 07:56:46 -0000 1.16
+++ camel/camel-file-utils.c 12 Mar 2006 20:49:46 -0000
@@ -316,6 +316,72 @@ camel_file_util_decode_string (FILE *in,
return 0;
}
+/**
+ * camel_file_util_encode_fixed_string:
+ * @out: file to output to
+ * @str: value to output
+ * @len: total-len of str to store
+ *
+ * Encode a normal string and save it in the output file.
+ * Unlike @camel_file_util_encode_string, it pads the
+ * @str with "NULL" bytes, if @len is > strlen(str)
+ *
+ * Return value: 0 on success, -1 on error.
+ **/
+int
+camel_file_util_encode_fixed_string (FILE *out, const char *str, size_t len)
+{
+ char buf[len];
+
+ /* Don't allow empty strings to be written */
+ if (len < 1)
+ return -1;
+
+ /* Max size is 64K */
+ if (len > 65536)
+ len = 65536;
+
+ memset(buf, 0x00, len);
+ g_strlcpy(buf, str, len);
+
+ if (fwrite (buf, len, 1, out) == len)
+ return 0;
+
+ return -1;
+}
+
+
+/**
+ * camel_file_util_decode_fixed_string:
+ * @in: file to read from
+ * @str: pointer to a variable to store the value in
+ * @len: total-len to decode.
+ *
+ * Decode a normal string from the input file.
+ *
+ * Return value: 0 on success, -1 on error.
+ **/
+int
+camel_file_util_decode_fixed_string (FILE *in, char **str, size_t len)
+{
+ register char *ret;
+
+ if (len > 65536) {
+ *str = NULL;
+ return -1;
+ }
+
+ ret = g_malloc (len+1);
+ if (len > 0 && fread (ret, len, 1, in) != 1) {
+ g_free (ret);
+ *str = NULL;
+ return -1;
+ }
+
+ ret[len] = 0;
+ *str = ret;
+ return 0;
+}
/**
* camel_file_util_safe_filename:
Index: camel/camel-file-utils.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/camel-file-utils.h,v
retrieving revision 1.11
diff -u -p -r1.11 camel-file-utils.h
--- camel/camel-file-utils.h 10 Jan 2006 07:56:46 -0000 1.11
+++ camel/camel-file-utils.h 12 Mar 2006 20:49:46 -0000
@@ -54,6 +54,9 @@ int camel_file_util_encode_size_t (FILE
int camel_file_util_decode_size_t (FILE *in, size_t *);
int camel_file_util_encode_string (FILE *out, const char *);
int camel_file_util_decode_string (FILE *in, char **);
+int camel_file_util_encode_fixed_string (FILE *out, const char *str, size_t len);
+int camel_file_util_decode_fixed_string (FILE *in, char **str, size_t len);
+
char *camel_file_util_safe_filename (const char *name);
Index: camel/camel-folder-summary.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/camel-folder-summary.c,v
retrieving revision 1.147
diff -u -p -r1.147 camel-folder-summary.c
--- camel/camel-folder-summary.c 2 Feb 2006 05:38:25 -0000 1.147
+++ camel/camel-folder-summary.c 12 Mar 2006 20:49:47 -0000
@@ -78,6 +78,8 @@ extern int strdup_count, malloc_count, f
#define _PRIVATE(o) (((CamelFolderSummary *)(o))->priv)
+#define META_SUMMARY_SUFFIX_LEN 5 /* strlen("-meta") */
+
/* trivial lists, just because ... */
struct _node {
struct _node *next;
@@ -88,12 +90,15 @@ static int my_list_size(struct _node **l
static int summary_header_load(CamelFolderSummary *, FILE *);
static int summary_header_save(CamelFolderSummary *, FILE *);
+static int summary_meta_header_load(CamelFolderSummary *, FILE *);
+static int summary_meta_header_save(CamelFolderSummary *, FILE *);
static CamelMessageInfo * message_info_new_from_header(CamelFolderSummary *, struct _camel_header_raw *);
static CamelMessageInfo * message_info_new_from_parser(CamelFolderSummary *, CamelMimeParser *);
static CamelMessageInfo * message_info_new_from_message(CamelFolderSummary *s, CamelMimeMessage *msg);
static CamelMessageInfo * message_info_load(CamelFolderSummary *, FILE *);
static int message_info_save(CamelFolderSummary *, FILE *, CamelMessageInfo *);
+static int meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *info);
static void message_info_free(CamelFolderSummary *, CamelMessageInfo *);
static CamelMessageContentInfo * content_info_new_from_header(CamelFolderSummary *, struct _camel_header_raw *);
@@ -146,6 +151,13 @@ camel_folder_summary_init (CamelFolderSu
p->filter_lock = g_mutex_new();
p->alloc_lock = g_mutex_new();
p->ref_lock = g_mutex_new();
+
+ s->meta_summary = g_malloc0(sizeof(CamelFolderMetaSummary));
+
+ /* Default is 20, any implementor having UIDs that has length
+ exceeding 20, has to override this value
+ */
+ s->meta_summary->uid_len = 20;
}
static void free_o_name(void *key, void *value, void *data)
@@ -193,6 +205,10 @@ camel_folder_summary_finalize (CamelObje
camel_object_unref((CamelObject *)p->filter_stream);
if (p->index)
camel_object_unref((CamelObject *)p->index);
+
+ /* Freeing memory occupied by meta-summary-header */
+ g_free(s->meta_summary->path);
+ g_free(s->meta_summary);
g_mutex_free(p->summary_lock);
g_mutex_free(p->io_lock);
@@ -256,6 +272,9 @@ camel_folder_summary_set_filename(CamelF
g_free(s->summary_path);
s->summary_path = g_strdup(name);
+ g_free(s->meta_summary->path);
+ s->meta_summary->path = g_strconcat(name, "-meta", NULL);
+
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
}
@@ -544,7 +563,8 @@ camel_folder_summary_load(CamelFolderSum
int i;
CamelMessageInfo *mi;
- if (s->summary_path == NULL)
+ if (s->summary_path == NULL ||
+ s->meta_summary->path == NULL)
return 0;
in = g_fopen(s->summary_path, "rb");
@@ -630,14 +650,17 @@ int
camel_folder_summary_save(CamelFolderSummary *s)
{
FILE *out;
- int fd, i;
+ FILE *out_meta;
+ int fd, i, fd_meta;
guint32 count;
CamelMessageInfo *mi;
char *path;
+ char *path_meta;
g_assert(s->message_info_size >= sizeof(CamelMessageInfoBase));
- if (s->summary_path == NULL
+ if (s->summary_path == NULL
+ || s->meta_summary->path == NULL
|| (s->flags & CAMEL_SUMMARY_DIRTY) == 0)
return 0;
@@ -655,32 +678,65 @@ camel_folder_summary_save(CamelFolderSum
return -1;
}
+ /* Meta summary code */
+ /* This meta summary will be used by beagle in order to
+ quickly pass through the actual summary file, which
+ is quite time consuming otherwise.
+ */
+ /* FIXME: Merge meta-summary and summary */
+ path_meta = alloca(strlen(s->meta_summary->path)+4);
+ sprintf(path_meta, "%s~", s->meta_summary->path);
+ fd_meta = g_open(path_meta, O_RDWR|O_CREAT|O_TRUNC|O_BINARY, 0600);
+ if (fd_meta == -1)
+ return -1;
+ out_meta = fdopen(fd_meta, "wb");
+ if (out_meta == NULL) {
+ i = errno;
+ g_unlink(path);
+ g_unlink(path_meta);
+ close(fd);
+ close(fd_meta);
+ errno = i;
+ return -1;
+ }
+
io(printf("saving header\n"));
CAMEL_SUMMARY_LOCK(s, io_lock);
if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_save(s, out) == -1)
goto exception;
-
+
+ if (summary_meta_header_save(s, out_meta) == -1)
+ goto exception;
+
/* now write out each message ... */
/* we check ferorr when done for i/o errors */
count = s->messages->len;
for (i = 0; i < count; i++) {
mi = s->messages->pdata[i];
- if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->message_info_save (s, out, mi) == -1)
+ if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->meta_message_info_save (s, out_meta, out, mi) == -1)
goto exception;
+ if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->message_info_save (s, out, mi) == -1)
+ goto exception;
+
if (s->build_content) {
if (perform_content_info_save (s, out, ((CamelMessageInfoBase *)mi)->content) == -1)
goto exception;
}
}
+ /* FIXME: Can't we use the above "fd" variables, instead of fileno()? */
if (fflush (out) != 0 || fsync (fileno (out)) == -1)
goto exception;
+ if (fflush (out_meta) != 0 || fsync (fileno (out_meta)) == -1)
+ goto exception;
+
fclose (out);
-
+ fclose (out_meta);
+
CAMEL_SUMMARY_UNLOCK(s, io_lock);
#ifdef G_OS_WIN32
@@ -692,6 +748,13 @@ camel_folder_summary_save(CamelFolderSum
errno = i;
return -1;
}
+
+ if (g_rename(path_meta, s->meta_summary->path) == -1) {
+ i = errno;
+ g_unlink(path_meta);
+ errno = i;
+ return -1;
+ }
s->flags &= ~CAMEL_SUMMARY_DIRTY;
return 0;
@@ -701,10 +764,12 @@ camel_folder_summary_save(CamelFolderSum
i = errno;
fclose (out);
+ fclose (out_meta);
CAMEL_SUMMARY_UNLOCK(s, io_lock);
g_unlink (path);
+ g_unlink (path_meta);
errno = i;
return -1;
@@ -725,20 +790,30 @@ int
camel_folder_summary_header_load(CamelFolderSummary *s)
{
FILE *in;
+ FILE *in_meta;
int ret;
- if (s->summary_path == NULL)
+ if (s->summary_path == NULL ||
+ s->meta_summary->path == NULL)
return 0;
in = g_fopen(s->summary_path, "rb");
if (in == NULL)
return -1;
+ in_meta = g_fopen(s->meta_summary->path, "rb");
+ if (in_meta == NULL) {
+ fclose(in);
+ return -1;
+ }
+
CAMEL_SUMMARY_LOCK(s, io_lock);
ret = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_load(s, in);
+ ret = summary_meta_header_load(s, in_meta);
CAMEL_SUMMARY_UNLOCK(s, io_lock);
fclose(in);
+ fclose(in_meta);
s->flags &= ~CAMEL_SUMMARY_DIRTY;
return ret;
}
@@ -1086,6 +1161,7 @@ camel_folder_summary_clear(CamelFolderSu
g_hash_table_destroy(s->messages_uid);
s->messages_uid = g_hash_table_new(g_str_hash, g_str_equal);
s->flags |= CAMEL_SUMMARY_DIRTY;
+ s->meta_summary->msg_expunged = TRUE;
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
}
@@ -1104,8 +1180,9 @@ camel_folder_summary_remove(CamelFolderS
g_hash_table_remove(s->messages_uid, camel_message_info_uid(info));
g_ptr_array_remove(s->messages, info);
s->flags |= CAMEL_SUMMARY_DIRTY;
+ s->meta_summary->msg_expunged = TRUE;
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-
+
camel_message_info_free(info);
}
@@ -1390,8 +1467,30 @@ my_list_size(struct _node **list)
}
static int
+summary_meta_header_load(CamelFolderSummary *s, FILE *in)
+{
+ if (!s->meta_summary->path)
+ return -1;
+
+ fseek(in, 0, SEEK_SET);
+
+ io(printf("Loading meta-header\n"));
+
+ if (camel_file_util_decode_uint32(in, &s->meta_summary->major) == -1
+ || camel_file_util_decode_uint32(in, &s->meta_summary->minor) == -1
+ || camel_file_util_decode_uint32(in, &s->meta_summary->uid_len) == -1) {
+ return -1;
+ }
+
+ return 0;
+}
+
+static int
summary_header_load(CamelFolderSummary *s, FILE *in)
{
+ if (!s->summary_path)
+ return -1;
+
fseek(in, 0, SEEK_SET);
io(printf("Loading header\n"));
@@ -1471,6 +1570,25 @@ summary_header_save(CamelFolderSummary *
return camel_file_util_encode_fixed_int32(out, junk);
}
+static int
+summary_meta_header_save(CamelFolderSummary *s, FILE *out_meta)
+{
+ fseek(out_meta, 0, SEEK_SET);
+
+ /* Save meta-summary header */
+ if (s->meta_summary->msg_expunged) {
+ s->meta_summary->msg_expunged = FALSE;
+ camel_file_util_encode_uint32(out_meta, ++s->meta_summary->major);
+ camel_file_util_encode_uint32(out_meta, (s->meta_summary->minor=0));
+ } else {
+ camel_file_util_encode_uint32(out_meta, s->meta_summary->major);
+ camel_file_util_encode_uint32(out_meta, ++s->meta_summary->minor);
+ }
+ camel_file_util_encode_uint32(out_meta, s->meta_summary->uid_len);
+
+ return ferror(out_meta);
+}
+
/* are these even useful for anything??? */
static CamelMessageInfo *
message_info_new_from_parser(CamelFolderSummary *s, CamelMimeParser *mp)
@@ -1774,6 +1892,25 @@ error:
}
static int
+meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *info)
+{
+ time_t timestamp;
+ off_t offset;
+ CamelMessageInfoBase *mi = (CamelMessageInfoBase *)info;
+
+ time (&timestamp);
+ offset = ftell (out);
+ /* FIXME: errno check after ftell */
+
+ camel_file_util_encode_time_t(out_meta, timestamp);
+ camel_file_util_encode_fixed_string(out_meta, camel_message_info_uid(mi), s->meta_summary->uid_len);
+ camel_file_util_encode_uint32(out_meta, mi->flags);
+ camel_file_util_encode_off_t(out_meta, offset);
+
+ return ferror(out);
+}
+
+static int
message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
{
guint32 count;
@@ -3115,6 +3252,7 @@ camel_folder_summary_class_init (CamelFo
klass->message_info_new_from_message = message_info_new_from_message;
klass->message_info_load = message_info_load;
klass->message_info_save = message_info_save;
+ klass->meta_message_info_save = meta_message_info_save;
klass->message_info_free = message_info_free;
klass->message_info_clone = message_info_clone;
Index: camel/camel-folder-summary.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/camel-folder-summary.h,v
retrieving revision 1.86
diff -u -p -r1.86 camel-folder-summary.h
--- camel/camel-folder-summary.h 31 Aug 2005 04:21:56 -0000 1.86
+++ camel/camel-folder-summary.h 12 Mar 2006 20:49:47 -0000
@@ -46,6 +46,8 @@ typedef struct _CamelFolderSummaryClass
typedef struct _CamelMessageInfo CamelMessageInfo;
typedef struct _CamelMessageInfoBase CamelMessageInfoBase;
+typedef struct _CamelFolderMetaSummary CamelFolderMetaSummary;
+
/* A tree of message content info structures
describe the content structure of the message (if it has any) */
struct _CamelMessageContentInfo {
@@ -224,6 +226,7 @@ struct _CamelFolderSummary {
GHashTable *messages_uid; /* CamelMessageInfo's by uid */
struct _CamelFolder *folder; /* parent folder, for events */
+ struct _CamelFolderMetaSummary *meta_summary; /* Meta summary */
};
struct _CamelFolderSummaryClass {
@@ -238,7 +241,8 @@ struct _CamelFolderSummaryClass {
CamelMessageInfo * (*message_info_new_from_parser)(CamelFolderSummary *, CamelMimeParser *);
CamelMessageInfo * (*message_info_new_from_message)(CamelFolderSummary *, CamelMimeMessage *);
CamelMessageInfo * (*message_info_load)(CamelFolderSummary *, FILE *);
- int (*message_info_save)(CamelFolderSummary *, FILE *, CamelMessageInfo *);
+ int (*message_info_save)(CamelFolderSummary *, FILE *, CamelMessageInfo *);
+ int (*meta_message_info_save)(CamelFolderSummary *, FILE *, FILE *, CamelMessageInfo *);
void (*message_info_free)(CamelFolderSummary *, CamelMessageInfo *);
CamelMessageInfo * (*message_info_clone)(CamelFolderSummary *, const CamelMessageInfo *);
@@ -272,6 +276,15 @@ struct _CamelFolderSummaryClass {
gboolean (*info_set_user_flag)(CamelMessageInfo *mi, const char *id, gboolean state);
gboolean (*info_set_user_tag)(CamelMessageInfo *mi, const char *id, const char *val);
gboolean (*info_set_flags)(CamelMessageInfo *mi, guint32 mask, guint32 set);
+};
+
+/* Meta-summary info */
+struct _CamelFolderMetaSummary {
+ guint32 major; /* Major version of meta-summary */
+ guint32 minor; /* Minor version of meta-summary */
+ guint32 uid_len; /* Length of UID (for implementors to use) */
+ gboolean msg_expunged; /* Whether any message is expunged or not */
+ char *path; /* Path to meta-summary-file */
};
CamelType camel_folder_summary_get_type (void);
Index: camel/providers/groupwise/camel-groupwise-summary.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-summary.c,v
retrieving revision 1.10
diff -u -p -r1.10 camel-groupwise-summary.c
--- camel/providers/groupwise/camel-groupwise-summary.c 9 Nov 2005 14:23:44 -0000 1.10
+++ camel/providers/groupwise/camel-groupwise-summary.c 12 Mar 2006 20:49:47 -0000
@@ -122,6 +122,9 @@ camel_groupwise_summary_init (CamelGroup
/* subclasses need to set the right instance data sizes */
s->message_info_size = sizeof(CamelGroupwiseMessageInfo);
s->content_info_size = sizeof(CamelGroupwiseMessageContentInfo);
+
+ /* Meta-summary - Overriding UID len */
+ s->meta_summary->uid_len = 2048;
}
Index: camel/providers/local/camel-mbox-summary.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/local/camel-mbox-summary.c,v
retrieving revision 1.56
diff -u -p -r1.56 camel-mbox-summary.c
--- camel/providers/local/camel-mbox-summary.c 8 Dec 2005 11:28:47 -0000 1.56
+++ camel/providers/local/camel-mbox-summary.c 12 Mar 2006 20:49:47 -0000
@@ -54,6 +54,7 @@ static CamelMessageInfo * message_info_n
static CamelMessageInfo * message_info_new_from_parser(CamelFolderSummary *, CamelMimeParser *);
static CamelMessageInfo * message_info_load (CamelFolderSummary *, FILE *);
static int message_info_save (CamelFolderSummary *, FILE *, CamelMessageInfo *);
+static int meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *mi);
/*static void message_info_free (CamelFolderSummary *, CamelMessageInfo *);*/
static char *mbox_summary_encode_x_evolution (CamelLocalSummary *cls, const CamelLocalMessageInfo *mi);
@@ -153,6 +154,7 @@ camel_mbox_summary_class_init(CamelMboxS
sklass->message_info_new_from_parser = message_info_new_from_parser;
sklass->message_info_load = message_info_load;
sklass->message_info_save = message_info_save;
+ sklass->meta_message_info_save = meta_message_info_save;
/*sklass->message_info_free = message_info_free;*/
sklass->info_set_user_flag = mbox_info_set_user_flag;
@@ -378,6 +380,20 @@ message_info_load(CamelFolderSummary *s,
error:
camel_message_info_free(mi);
return NULL;
+}
+
+static int
+meta_message_info_save(CamelFolderSummary *s, FILE *out_meta, FILE *out, CamelMessageInfo *mi)
+{
+ CamelMboxMessageInfo *mbi = (CamelMboxMessageInfo *)mi;
+
+ io(printf("saving mbox message info\n"));
+
+ if (((CamelFolderSummaryClass *)camel_mbox_summary_parent)->meta_message_info_save(s, out_meta, out, mi) == -1
+ || camel_file_util_encode_off_t(out_meta, mbi->frompos) == -1)
+ return -1;
+
+ return 0;
}
static int
Index: camel/providers/local/camel-mbox-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/local/camel-mbox-store.c,v
retrieving revision 1.44
diff -u -p -r1.44 camel-mbox-store.c
--- camel/providers/local/camel-mbox-store.c 10 Jan 2006 07:56:48 -0000 1.44
+++ camel/providers/local/camel-mbox-store.c 13 Mar 2006 13:33:37 -0000
@@ -99,7 +99,7 @@ camel_mbox_store_get_type(void)
}
static char *extensions[] = {
- ".msf", ".ev-summary", ".ibex.index", ".ibex.index.data", ".cmeta", ".lock"
+ ".msf", ".ev-summary", ".ibex.index", ".ibex.index.data", ".cmeta", ".lock", ".ev-summary-meta"
};
static gboolean

View File

@ -1,38 +0,0 @@
Index: camel/camel-mime-utils.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/camel-mime-utils.c,v
retrieving revision 1.235
diff -u -p -r1.235 camel-mime-utils.c
--- camel/camel-mime-utils.c 23 Jan 2006 09:57:55 -0000 1.235
+++ camel/camel-mime-utils.c 2 Mar 2006 10:14:36 -0000
@@ -2247,7 +2247,7 @@ camel_content_type_unref(CamelContentTyp
g_free(ct->type);
g_free(ct->subtype);
g_free(ct);
- ct= NULL;
+ ct = NULL;
} else {
ct->refcount--;
}
@@ -2449,7 +2449,7 @@ header_decode_mailbox(const char **in, c
}
}
pre = header_decode_word (&inptr);
- header_decode_lwsp(&inptr);
+ /*header_decode_lwsp(&inptr);*/
} else {
w(g_warning("broken address? %s", *in));
}
@@ -2508,10 +2508,10 @@ header_decode_mailbox(const char **in, c
g_string_truncate(name, 0);
g_string_append(name, text);
}
- } else {
+ }/* else {
g_string_append(name, text?text:addr->str);
g_string_truncate(addr, 0);
- }
+ }*/
g_free(text);
/* or maybe that we've added up a bunch of broken bits to make an encoded word */

View File

@ -1,16 +0,0 @@
Index: servers/exchange/storage/exchange-hierarchy-webdav.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-hierarchy-webdav.c,v
retrieving revision 1.11
diff -u -p -r1.11 exchange-hierarchy-webdav.c
--- servers/exchange/storage/exchange-hierarchy-webdav.c 25 Feb 2006 06:09:14 -0000 1.11
+++ servers/exchange/storage/exchange-hierarchy-webdav.c 6 Apr 2006 13:50:35 -0000
@@ -421,7 +421,7 @@ xfer_folder (ExchangeHierarchy *hier, EF
* update folder size in case of rename.
*/
- source_folder_name = strrchr (physical_uri + 1, '/');
+ source_folder_name = strrchr (physical_uri, '/') + 1;
source_parent = g_strndup (physical_uri,
source_folder_name - physical_uri);
if (!strcmp (e_folder_get_physical_uri (dest_parent), source_parent)) {

View File

@ -1,100 +0,0 @@
Index: camel/providers/imap/camel-imap-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-store.c,v
retrieving revision 1.340.2.3
diff -u -r1.340.2.3 camel/providers/imap/camel-imap-store.c
--- camel/providers/imap/camel-imap-store.c 24 Apr 2006 15:18:25 -0000 1.340.2.3
+++ camel/providers/imap/camel-imap-store.c 1 May 2006 21:14:40 -0000
@@ -280,7 +280,7 @@
imap_store->parameters = 0;
if (camel_url_get_param (url, "use_lsub"))
imap_store->parameters |= IMAP_PARAM_SUBSCRIPTIONS;
- if (camel_url_get_param (url, "namespace")) {
+ if (camel_url_get_param (url, "override_namespace") && camel_url_get_param (url, "namespace")) {
imap_store->parameters |= IMAP_PARAM_OVERRIDE_NAMESPACE;
g_free(imap_store->namespace);
imap_store->namespace = g_strdup (camel_url_get_param (url, "namespace"));
@@ -2618,7 +2618,10 @@
if (store->namespace && store->namespace[0]) {
char *pattern;
-
+
+ get_folders_sync(store, "INBOX", &m->ex);
+ if (camel_exception_is_set(&m->ex))
+ goto done;
get_folders_sync(store, store->namespace, &m->ex);
if (camel_exception_is_set(&m->ex))
goto done;
@@ -2697,6 +2700,10 @@
if (top[0] == 0) {
if (imap_store->namespace && imap_store->namespace[0]) {
+ get_folders_sync(imap_store, "INBOX", ex);
+ if (camel_exception_is_set(ex))
+ goto fail;
+
i = strlen(imap_store->namespace)-1;
pattern = g_alloca(i+5);
strcpy(pattern, imap_store->namespace);
@@ -2711,7 +2718,7 @@
}
} else {
char *name;
-
+
name = camel_imap_store_summary_full_from_path(imap_store->summary, top);
if (name == NULL)
name = camel_imap_store_summary_path_to_full(imap_store->summary, top, imap_store->dir_sep);
@@ -2748,6 +2755,7 @@
guint32 flags, CamelException *ex)
{
CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
+ gboolean include_inbox = FALSE;
CamelFolderInfo *fi;
GPtrArray *folders;
char *pattern, *name;
@@ -2760,12 +2768,14 @@
folders = g_ptr_array_new ();
- if (top == NULL)
+ if (top == NULL || top[0] == '\0') {
+ include_inbox = TRUE;
top = "";
+ }
/* get starting point */
if (top[0] == 0) {
- if (imap_store->namespace) {
+ if (imap_store->namespace && imap_store->namespace[0]) {
name = g_strdup(imap_store->summary->namespace->full_name);
top = imap_store->summary->namespace->path;
} else
@@ -2789,9 +2799,10 @@
if (si == NULL)
continue;
-
+
if ((!strcmp(name, camel_imap_store_info_full_name(imap_store->summary, si))
- || imap_match_pattern(imap_store->dir_sep, pattern, camel_imap_store_info_full_name(imap_store->summary, si)))
+ || imap_match_pattern(imap_store->dir_sep, pattern, camel_imap_store_info_full_name(imap_store->summary, si))
+ || (include_inbox && !g_ascii_strcasecmp (camel_imap_store_info_full_name(imap_store->summary, si), "INBOX")))
&& ((imap_store->parameters & IMAP_PARAM_SUBSCRIPTIONS) == 0
|| (flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED) == 0
|| (si->flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED))) {
@@ -2804,11 +2815,11 @@
it. See create folder */
if (fi->flags & CAMEL_FOLDER_NOINFERIORS)
fi->flags = (fi->flags & ~CAMEL_FOLDER_NOINFERIORS) | CAMEL_FOLDER_NOCHILDREN;
-
+
/* blah, this gets lost somewhere, i can't be bothered finding out why */
if (!g_ascii_strcasecmp(fi->full_name, "inbox"))
fi->flags = (fi->flags & ~CAMEL_FOLDER_TYPE_MASK) | CAMEL_FOLDER_TYPE_INBOX;
-
+
if (si->flags & CAMEL_FOLDER_NOSELECT) {
CamelURL *url = camel_url_new(fi->uri, NULL);

View File

@ -1,104 +0,0 @@
Index: camel/providers/imap/camel-imap-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-store.c,v
retrieving revision 1.340.2.2
diff -u -r1.340.2.2 camel-imap-store.c
--- camel/providers/imap/camel-imap-store.c 20 Apr 2006 21:12:15 -0000 1.340.2.2
+++ camel/providers/imap/camel-imap-store.c 21 Apr 2006 18:56:51 -0000
@@ -978,16 +978,11 @@
camel_exception_clear (ex);
ai = camel_getaddrinfo(service->url->host, port, &hints, ex);
}
+
if (ai == NULL)
return FALSE;
- if (!(ret = connect_to_server (service, ai, mode, ex)) && mode == MODE_SSL) {
- camel_exception_clear (ex);
- ret = connect_to_server (service, ai, MODE_TLS, ex);
- } else if (!ret && mode == MODE_TLS) {
- camel_exception_clear (ex);
- ret = connect_to_server (service, ai, MODE_CLEAR, ex);
- }
+ ret = connect_to_server (service, ai, mode, ex);
camel_freeaddrinfo (ai);
Index: camel/providers/imap4/camel-imap4-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap4/camel-imap4-store.c,v
retrieving revision 1.56.2.3
diff -u -r1.56.2.3 camel-imap4-store.c
--- camel/providers/imap4/camel-imap4-store.c 21 Apr 2006 15:42:20 -0000 1.56.2.3
+++ camel/providers/imap4/camel-imap4-store.c 21 Apr 2006 18:56:51 -0000
@@ -383,16 +383,11 @@
camel_exception_clear (ex);
ai = camel_getaddrinfo (service->url->host, port, &hints, ex);
}
+
if (ai == NULL)
return FALSE;
- if (!(ret = connect_to_server (engine, ai, mode, ex)) && mode == MODE_SSL) {
- camel_exception_clear (ex);
- ret = connect_to_server (engine, ai, MODE_TLS, ex);
- } else if (!ret && mode == MODE_TLS) {
- camel_exception_clear (ex);
- ret = connect_to_server (engine, ai, MODE_CLEAR, ex);
- }
+ ret = connect_to_server (engine, ai, mode, ex);
camel_freeaddrinfo (ai);
Index: camel/providers/pop3/camel-pop3-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/pop3/camel-pop3-store.c,v
retrieving revision 1.124
diff -u -r1.124 camel-pop3-store.c
--- camel/providers/pop3/camel-pop3-store.c 31 Aug 2005 04:26:04 -0000 1.124
+++ camel/providers/pop3/camel-pop3-store.c 21 Apr 2006 18:56:51 -0000
@@ -324,16 +324,11 @@
camel_exception_clear (ex);
ai = camel_getaddrinfo(service->url->host, port, &hints, ex);
}
+
if (ai == NULL)
return FALSE;
- if (!(ret = connect_to_server (service, ai, mode, ex)) && mode == MODE_SSL) {
- camel_exception_clear (ex);
- ret = connect_to_server (service, ai, MODE_TLS, ex);
- } else if (!ret && mode == MODE_TLS) {
- camel_exception_clear (ex);
- ret = connect_to_server (service, ai, MODE_CLEAR, ex);
- }
+ ret = connect_to_server (service, ai, mode, ex);
camel_freeaddrinfo (ai);
Index: camel/providers/smtp/camel-smtp-transport.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/smtp/camel-smtp-transport.c,v
retrieving revision 1.169.6.2
diff -u -r1.169.6.2 camel-smtp-transport.c
--- camel/providers/smtp/camel-smtp-transport.c 18 Apr 2006 20:59:29 -0000 1.169.6.2
+++ camel/providers/smtp/camel-smtp-transport.c 21 Apr 2006 18:56:51 -0000
@@ -431,16 +431,11 @@
camel_exception_clear (ex);
ai = camel_getaddrinfo(service->url->host, port, &hints, ex);
}
+
if (ai == NULL)
return FALSE;
- if (!(ret = connect_to_server (service, ai, mode, ex)) && mode == MODE_SSL) {
- camel_exception_clear (ex);
- ret = connect_to_server (service, ai, MODE_TLS, ex);
- } else if (!ret && mode == MODE_TLS) {
- camel_exception_clear (ex);
- ret = connect_to_server (service, ai, MODE_CLEAR, ex);
- }
+ ret = connect_to_server (service, ai, mode, ex);
camel_freeaddrinfo (ai);

View File

@ -1,13 +0,0 @@
--- calendar/libedata-cal/e-cal-backend-cache.c.orig 2006-01-19 09:41:58.000000000 +0100
+++ calendar/libedata-cal/e-cal-backend-cache.c 2006-03-23 15:24:54.421930564 +0100
@@ -235,7 +235,9 @@ e_cal_backend_cache_get_type (void)
0,
(GInstanceInitFunc) e_cal_backend_cache_init,
};
- type = g_type_register_static (E_TYPE_FILE_CACHE, "ECalBackendCache", &info, 0);
+ /* Check if the type is already registered */
+ if (!(type = g_type_from_name ("ECalBackendCache")))
+ type = g_type_register_static (E_TYPE_FILE_CACHE, "ECalBackendCache", &info, 0);
}
g_static_mutex_unlock (&registering);

View File

@ -1,144 +0,0 @@
Index: servers/exchange/lib/e2k-uri.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-uri.c,v
retrieving revision 1.5
diff -u -p -r1.5 e2k-uri.c
--- servers/exchange/lib/e2k-uri.c 27 Jan 2006 14:16:06 -0000 1.5
+++ servers/exchange/lib/e2k-uri.c 18 Apr 2006 10:00:10 -0000
@@ -109,14 +109,6 @@ e2k_uri_new (const char *uri_string)
*backslash = '\0';
uri->user = g_strdup (backslash + 1);
}
- else {
- /* if backslash is not there check for @ */
- user_at = strchr (uri->user, '@');
- if (user_at) {
- *user_at = '\0';
- uri->domain = g_strdup (user_at + 1);
- }
- }
} else
uri->user = uri->passwd = uri->domain = NULL;
Index: servers/exchange/lib/e2k-validate.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-validate.h,v
retrieving revision 1.3
diff -u -p -r1.3 e2k-validate.h
--- servers/exchange/lib/e2k-validate.h 1 Jul 2005 05:43:21 -0000 1.3
+++ servers/exchange/lib/e2k-validate.h 18 Apr 2006 10:00:47 -0000
@@ -36,7 +36,7 @@ typedef enum {
E2K_AUTOCONFIG_FAILED
} E2kAutoconfigResult;
-gboolean e2k_validate_user (const char *owa_url, char *user, ExchangeParams *exchange_params, gboolean *remember_password, E2kAutoconfigResult *result);
+gboolean e2k_validate_user (const char *owa_url, char **user, ExchangeParams *exchange_params, gboolean *remember_password, E2kAutoconfigResult *result);
#ifdef __cplusplus
Index: servers/exchange/lib/e2k-autoconfig.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-autoconfig.c,v
retrieving revision 1.14
diff -u -p -r1.14 e2k-autoconfig.c
--- servers/exchange/lib/e2k-autoconfig.c 6 Mar 2006 06:00:25 -0000 1.14
+++ servers/exchange/lib/e2k-autoconfig.c 18 Apr 2006 10:02:36 -0000
@@ -1002,6 +1002,7 @@ set_account_uri_string (E2kAutoconfig *a
g_string_append (uri, ";mailbox=");
e2k_uri_append_encoded (uri, mailbox, FALSE, ";?");
}
+ printf ("set account uri string: mailbox = %s \n", mailbox);
g_string_append (uri, ";owa_path=/");
e2k_uri_append_encoded (uri, path, FALSE, ";?");
g_free (path);
@@ -1505,6 +1506,7 @@ validate (const char *owa_url, char *use
*mailbox++ = '\0';
exchange_params->mailbox = g_strdup (mailbox);
+ printf ("validate: mailbox = %s \n", exchange_params->mailbox);
exchange_params->owa_path = g_strdup_printf ("%s%s", "/", path);
g_free (path);
exchange_params->host = g_strdup (ac->pf_server);
@@ -1619,14 +1621,20 @@ validate (const char *owa_url, char *use
}
gboolean
-e2k_validate_user (const char *owa_url, char *user,
+e2k_validate_user (const char *owa_url, char **user,
ExchangeParams *exchange_params, gboolean *remember_password,
E2kAutoconfigResult *result)
{
gboolean valid = FALSE, remember=FALSE;
char *key, *password, *prompt;
+ char *username;
+ gchar **usernames;
+ int try = 0;
- key = g_strdup_printf ("%s//%s@%s/", "exchange:", user, owa_url); /* FIXME */
+try_auth_again:
+ username = g_strdup (*user);
+
+ key = g_strdup_printf ("%s//%s@%s/", "exchange:", username, owa_url); /* FIXME */
password = e_passwords_get_password ("Exchange", key);
if (password) {
/* This can be the case, where user presses authenticate button and
@@ -1636,7 +1644,7 @@ e2k_validate_user (const char *owa_url,
e_passwords_forget_password ("Exchange", key);
}
- prompt = g_strdup_printf (_("Enter password for %s"), user);
+ prompt = g_strdup_printf (_("Enter password for %s"), username);
password = e_passwords_ask_password (_("Enter password"),
"Exchange", key, prompt,
E_PASSWORDS_REMEMBER_FOREVER|E_PASSWORDS_SECRET,
@@ -1644,10 +1652,11 @@ e2k_validate_user (const char *owa_url,
g_free (prompt);
if (!password) {
g_free (key);
+ g_free (username);
return valid;
}
- valid = validate (owa_url, user, password, exchange_params, result);
+ valid = validate (owa_url, username, password, exchange_params, result);
if (valid) {
/* generate the proper key once the host name
* is read and remember password temporarily,
@@ -1659,18 +1668,35 @@ e2k_validate_user (const char *owa_url,
g_free (key);
if (exchange_params->is_ntlm)
key = g_strdup_printf ("exchange://%s;auth=NTLM@%s/",
- user, exchange_params->host);
+ username, exchange_params->host);
else
- key = g_strdup_printf ("exchange://%s@%s/", user, exchange_params->host);
+ key = g_strdup_printf ("exchange://%s@%s/", username, exchange_params->host);
e_passwords_add_password (key, password);
e_passwords_remember_password ("Exchange", key);
}
else {
+ if (try == 0) {
+ /* Check for name as e-mail id and try once again
+ * extracing username from e-mail id.
+ */
+ usernames = g_strsplit (*user, "@", 2);
+ if (usernames && usernames[0] && usernames[1]) {
+ username = g_strdup (usernames[0]);
+ g_strfreev (usernames);
+ try ++;
+ memset(*user, 0, strlen(*user));
+ g_free (*user);
+ *user = g_strdup (username);
+ g_free (username);
+ goto try_auth_again;
+ }
+ }
/* if validation failed*/
e_passwords_forget_password ("Exchange", key);
}
g_free (key);
g_free (password);
+ g_free (username);
return valid;
}

View File

@ -1,40 +0,0 @@
--- calendar/backends/file/e-cal-backend-file.c.orig 2006-02-28 13:16:32.000000000 +0100
+++ calendar/backends/file/e-cal-backend-file.c 2006-03-23 15:15:18.582703795 +0100
@@ -399,13 +399,17 @@ check_dup_uid (ECalBackendFile *cbfile,
{
ECalBackendFilePrivate *priv;
ECalBackendFileObject *obj_data;
- const char *uid;
+ const char *uid = NULL;
char *new_uid;
priv = cbfile->priv;
e_cal_component_get_uid (comp, &uid);
-
+ if (!uid) {
+ g_warning ("Checking for duplicate uid, the component does not have a valid UID skipping it\n");
+ return;
+ }
+
obj_data = g_hash_table_lookup (priv->comp_uid_hash, uid);
if (!obj_data)
return; /* Everything is fine */
@@ -447,11 +451,16 @@ add_component (ECalBackendFile *cbfile,
{
ECalBackendFilePrivate *priv;
ECalBackendFileObject *obj_data;
- const char *uid;
+ const char *uid = NULL;
priv = cbfile->priv;
e_cal_component_get_uid (comp, &uid);
+ if (!uid) {
+ g_warning ("The component does not have a valid UID skipping it\n");
+ return;
+ }
+
obj_data = g_hash_table_lookup (priv->comp_uid_hash, uid);
if (e_cal_component_is_instance (comp)) {
const char *rid;

View File

@ -1,12 +0,0 @@
--- calendar/libedata-cal/e-cal-backend.c.orig 2006-03-04 10:57:00.000000000 +0100
+++ calendar/libedata-cal/e-cal-backend.c 2006-03-23 15:34:00.889158434 +0100
@@ -1319,7 +1319,8 @@ e_cal_backend_notify_object_removed (ECa
if (object == NULL) {
/* if object == NULL, it means the object has been completely
removed from the backend */
- e_data_cal_view_notify_objects_removed_1 (query, id);
+ if (e_data_cal_view_object_matches (query, old_object))
+ e_data_cal_view_notify_objects_removed_1 (query, id);
} else
match_query_and_notify (query, old_object, object);

View File

@ -1,12 +0,0 @@
--- libedataserver/e-source-group.c.orig 2005-12-08 08:59:00.000000000 +0100
+++ libedataserver/e-source-group.c 2006-03-23 15:19:38.363378094 +0100
@@ -216,6 +216,9 @@ e_source_group_new_from_xmldoc (xmlDocPt
goto done;
new = g_object_new (e_source_group_get_type (), NULL);
+ if (!new)
+ goto done;
+
new->priv->uid = g_strdup (uid);
e_source_group_set_name (new, name);

View File

@ -1,15 +0,0 @@
--- camel/camel-mime-filter-crlf.c 2005-08-31 06:21:56.000000000 +0200
+++ camel/camel-mime-filter-crlf.c.new 2006-11-06 07:40:33.000000000 +0100
@@ -97,7 +97,11 @@ filter (CamelMimeFilter *f, char *in, si
*outptr++ = *inptr++;
}
} else {
- camel_mime_filter_set_size (f, len, FALSE);
+ /* Output can "grow" by one byte if crlf->saw_cr was set as
+ * a carry-over from the previous invocation. This will happen
+ * in practice, as the input is processed in arbitrarily-sized
+ * blocks. */
+ camel_mime_filter_set_size (f, len+1, FALSE);
outptr = f->outbuf;
while (inptr < inend) {

View File

@ -1,89 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
retrieving revision 1.94
diff -u -p -r1.94 camel-groupwise-store.c
--- camel/providers/groupwise/camel-groupwise-store.c 13 Mar 2006 06:31:04 -0000 1.94
+++ camel/providers/groupwise/camel-groupwise-store.c 13 Mar 2006 09:42:28 -0000
@@ -169,9 +169,9 @@ groupwise_compare_folder_name (gconstpoi
static gboolean
groupwise_auth_loop (CamelService *service, CamelException *ex)
{
- CamelGroupwiseStore *groupwise_store = CAMEL_GROUPWISE_STORE (service);
CamelSession *session = camel_service_get_session (service);
CamelStore *store = CAMEL_STORE (service);
+ CamelGroupwiseStore *groupwise_store = CAMEL_GROUPWISE_STORE (store);
CamelGroupwiseStorePrivate *priv = groupwise_store->priv;
char *errbuf = NULL;
gboolean authenticated = FALSE;
@@ -183,6 +183,7 @@ groupwise_auth_loop (CamelService *servi
else
uri = g_strconcat ("http://", priv->server_name, ":", priv->port, "/soap", NULL);
service->url->passwd = NULL;
+
while (!authenticated) {
if (errbuf) {
@@ -192,6 +193,7 @@ groupwise_auth_loop (CamelService *servi
service->url->passwd = NULL;
}
+
if (!service->url->passwd && !(store->flags & CAMEL_STORE_PROXY)) {
char *prompt;
@@ -268,10 +270,9 @@ groupwise_connect (CamelService *service
d("in groupwise store connect\n");
/* if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
- (service->status == CAMEL_SERVICE_DISCONNECTED))
+ (service->status == CAMEL_SERVICE_DISCONNECTED))
return FALSE; */
-
- if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL)
+ if (service->status == CAMEL_SERVICE_DISCONNECTED)
return FALSE;
if (!priv) {
@@ -293,7 +294,9 @@ groupwise_connect (CamelService *service
return FALSE;
}
+
service->status = CAMEL_SERVICE_CONNECTED;
+ ((CamelOfflineStore *) store)->state = CAMEL_OFFLINE_STORE_NETWORK_AVAIL;
if (!e_gw_connection_get_version (priv->cnc)) {
camel_session_alert_user(session,
@@ -1110,6 +1113,7 @@ groupwise_get_folder_info (CamelStore *s
if (top && groupwise_is_system_folder (top))
return groupwise_build_folder_info (groupwise_store, NULL, top );
+
/*
* Thanks to Michael, for his cached folders implementation in IMAP
* is used as is here.
@@ -1141,6 +1145,12 @@ groupwise_get_folder_info (CamelStore *s
CAMEL_SERVICE_LOCK (store, connect_lock);
if ((groupwise_store->list_loaded == FALSE) && check_for_connection((CamelService *)store, ex)) {
+ if (!priv->cnc) {
+ if (groupwise_connect ((CamelService *)store, ex)) {
+ g_warning ("Could connect!!!\n");
+ } else
+ g_warning ("Could not connect..failure connecting\n");
+ }
if (camel_groupwise_store_connected ((CamelGroupwiseStore *)store, ex)) {
groupwise_store->list_loaded = TRUE;
groupwise_folders_sync (groupwise_store, ex);
@@ -1416,8 +1426,9 @@ gboolean
camel_groupwise_store_connected (CamelGroupwiseStore *store, CamelException *ex)
{
if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_AVAIL
- && camel_service_connect ((CamelService *)store, ex))
+ && camel_service_connect ((CamelService *)store, ex)) {
return TRUE;
+ }
/*Not online, so return FALSE*/
return FALSE;
}

View File

@ -1,73 +0,0 @@
Index: camel/camel-gpg-context.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/camel-gpg-context.c,v
retrieving revision 1.77
diff -u -p -r1.77 camel-gpg-context.c
--- camel/camel-gpg-context.c 2 Feb 2006 08:37:46 -0000 1.77
+++ camel/camel-gpg-context.c 16 Mar 2006 05:04:39 -0000
@@ -811,7 +811,7 @@ gpg_ctx_parse_status (struct _GpgCtx *gp
"user: \"%s\""), name);
}
- if ((passwd = camel_session_get_password (gpg->session, NULL, NULL, prompt, gpg->need_id, CAMEL_SESSION_PASSWORD_SECRET, ex)) && !gpg->utf8) {
+ if ((passwd = camel_session_get_password (gpg->session, NULL, NULL, prompt, gpg->need_id, CAMEL_SESSION_PASSWORD_SECRET|CAMEL_SESSION_PASSPHRASE, ex)) && !gpg->utf8) {
char *opasswd = passwd;
if ((passwd = g_locale_to_utf8 (passwd, -1, &nread, &nwritten, NULL))) {
Index: camel/camel-session.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/camel-session.h,v
retrieving revision 1.53
diff -u -p -r1.53 camel-session.h
--- camel/camel-session.h 22 Dec 2005 01:48:30 -0000 1.53
+++ camel/camel-session.h 16 Mar 2006 05:04:39 -0000
@@ -56,6 +56,7 @@ enum {
CAMEL_SESSION_PASSWORD_REPROMPT = 1 << 0,
CAMEL_SESSION_PASSWORD_SECRET = 1 << 2,
CAMEL_SESSION_PASSWORD_STATIC = 1 << 3,
+ CAMEL_SESSION_PASSPHRASE = 1 << 4,
};
struct _CamelSession
Index: libedataserverui/e-passwords.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/e-passwords.c,v
retrieving revision 1.31
diff -u -p -r1.31 e-passwords.c
--- libedataserverui/e-passwords.c 24 Feb 2006 21:00:47 -0000 1.31
+++ libedataserverui/e-passwords.c 16 Mar 2006 05:04:42 -0000
@@ -467,9 +739,16 @@ ep_ask_password(EPassMsg *msg)
/* static password, shouldn't be remembered between sessions,
but will be remembered within the session beyond our control */
if (type != E_PASSWORDS_REMEMBER_NEVER) {
- msg->check = gtk_check_button_new_with_mnemonic(type == E_PASSWORDS_REMEMBER_FOREVER
- ? _("_Remember this password")
- : _("_Remember this password for the remainder of this session"));
+ if (msg->flags & E_PASSWORDS_PASSPHRASE) {
+ msg->check = gtk_check_button_new_with_mnemonic(type == E_PASSWORDS_REMEMBER_FOREVER
+ ? _("_Remember this passphrase")
+ : _("_Remember this passphrase for the remainder of this session"));
+ } else {
+ msg->check = gtk_check_button_new_with_mnemonic(type == E_PASSWORDS_REMEMBER_FOREVER
+ ? _("_Remember this password")
+ : _("_Remember this password for the remainder of this session"));
+
+ }
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (msg->check), *msg->remember);
gtk_box_pack_start (GTK_BOX (vbox), msg->check, TRUE, FALSE, 3);
if ((msg->flags & E_PASSWORDS_DISABLE_REMEMBER))
Index: libedataserverui/e-passwords.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/e-passwords.h,v
retrieving revision 1.12
diff -u -p -r1.12 e-passwords.h
--- libedataserverui/e-passwords.h 31 Aug 2005 04:26:10 -0000 1.12
+++ libedataserverui/e-passwords.h 16 Mar 2006 05:04:42 -0000
@@ -58,6 +58,7 @@ typedef enum {
E_PASSWORDS_REPROMPT = 1<<9,
E_PASSWORDS_ONLINE = 1<<10, /* only ask if we're online */
E_PASSWORDS_DISABLE_REMEMBER = 1<<11, /* disable the 'remember password' checkbox */
+ E_PASSWORDS_PASSPHRASE = 1<<12, /* We are asking a passphrase */
} EPasswordsRememberType;
char * e_passwords_ask_password (const char *title,

View File

@ -1,217 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.119
diff -u -p -r1.119 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 15 Mar 2006 08:45:26 -0000 1.119
+++ camel/providers/groupwise/camel-groupwise-folder.c 16 Mar 2006 11:29:35 -0000
@@ -49,6 +49,8 @@
#include <e-gw-connection.h>
#include <e-gw-item.h>
+#include <libsoup/soup-misc.h>
+
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -58,6 +60,7 @@
#define REMOVE_JUNK_ENTRY -1
#define JUNK_FOLDER "Junk Mail"
#define READ_CURSOR_MAX_IDS 500
+#define MAX_ATTACHMENT_SIZE 1*1024*1024 /*In bytes*/
static CamelOfflineFolderClass *parent_class = NULL;
@@ -1455,7 +1458,7 @@ groupwise_folder_item_to_msg( CamelFolde
const char *uid = NULL;
gboolean is_text_html = FALSE;
gboolean is_text_html_embed = FALSE;
-
+ gboolean is_base64_encoded = FALSE;
uid = e_gw_item_get_id(item);
cnc = cnc_lookup (priv);
@@ -1541,6 +1544,7 @@ groupwise_folder_item_to_msg( CamelFolde
int len = 0;
CamelMimePart *part;
EGwItem *temp_item;
+ is_base64_encoded = FALSE;
if (attach->contentid && (is_text_html_embed != TRUE))
is_text_html_embed = TRUE;
@@ -1568,9 +1572,36 @@ groupwise_folder_item_to_msg( CamelFolde
}
g_object_unref (temp_item);
} else {
- status = e_gw_connection_get_attachment (cnc,
- attach->id, 0, -1,
- (const char **)&attachment, &len);
+ g_print ("%d:%d\n", attach->size, MAX_ATTACHMENT_SIZE);
+ if (attach->size > MAX_ATTACHMENT_SIZE) {
+ long count = 0;
+ int i, t_len=0, offset=0, t_offset=0;
+ char *t_attach = NULL;
+ GString *gstr = g_string_new (NULL);
+
+ count = (attach->size)/(1024*1024);
+ count++;
+ len = 0;
+ for (i = 0; i<count; i++) {
+ status = e_gw_connection_get_attachment_base64 (cnc,
+ attach->id, t_offset, MAX_ATTACHMENT_SIZE,
+ (const char **)&t_attach, &t_len, &offset);
+ if (status == E_GW_CONNECTION_STATUS_OK) {
+ gstr = g_string_append (gstr, t_attach);
+ t_offset = offset;
+ g_free (t_attach);
+ t_attach = NULL;
+ t_len = 0;
+ }
+ }
+ attachment = soup_base64_decode (gstr->str, &len);
+ g_string_free (gstr, TRUE);
+ is_base64_encoded = FALSE;
+ } else {
+ status = e_gw_connection_get_attachment (cnc,
+ attach->id, 0, -1,
+ (const char **)&attachment, &len);
+ }
if (status != E_GW_CONNECTION_STATUS_OK) {
g_warning ("Could not get attachment\n");
continue;
@@ -1613,6 +1644,8 @@ groupwise_folder_item_to_msg( CamelFolde
//camel_mime_part_set_filename(part, g_strdup(attach->name));
if (attach->contentType) {
+ if (is_base64_encoded)
+ camel_mime_part_set_encoding (part, CAMEL_TRANSFER_ENCODING_BASE64);
camel_mime_part_set_content(part, attachment, len, attach->contentType);
camel_content_type_set_param (((CamelDataWrapper *) part)->mime_type, "name", attach->name);
} else
@@ -1872,15 +1905,16 @@ groupwise_transfer_messages_to (CamelFol
if (status == E_GW_CONNECTION_STATUS_OK) {
if (delete_originals)
camel_folder_delete_message(source, uids->pdata[index]);
- /* Refresh the destination folder, if its not refreshed already */
- if (gw_store->current_folder != destination ||
- camel_folder_summary_count (destination->summary) == count)
- camel_folder_refresh_info (destination, ex);
} else {
g_warning ("Warning!! Could not move item : %s\n", (char *)uids->pdata[index]);
}
index ++;
}
+ /* Refresh the destination folder, if its not refreshed already */
+ if (gw_store->current_folder != destination ||
+ camel_folder_summary_count (destination->summary) == count)
+ camel_folder_refresh_info (destination, ex);
+
camel_folder_summary_touch (source->summary);
camel_folder_summary_touch (destination->summary);
Index: servers/groupwise/e-gw-connection.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.c,v
retrieving revision 1.139
diff -u -p -r1.139 e-gw-connection.c
--- servers/groupwise/e-gw-connection.c 15 Mar 2006 06:08:24 -0000 1.139
+++ servers/groupwise/e-gw-connection.c 17 Mar 2006 05:22:38 -0000
@@ -148,6 +148,7 @@ e_gw_connection_parse_response_status (S
case 53530: return E_GW_CONNECTION_STATUS_OTHER;
/* FIXME: 58652 should be changed with an enum.*/
case 58652: return 58652;
+ case 59922: return 59922; /*Very big attachment, get in chunks*/
/* FIXME: map all error codes */
}
@@ -2571,6 +2572,75 @@ e_gw_connection_get_attachment (EGwConne
return E_GW_CONNECTION_STATUS_OK;
}
+/*
+ *
+ */
+EGwConnectionStatus
+e_gw_connection_get_attachment_base64 (EGwConnection *cnc, const char *id, int offset, int length, const char **attachment, int *attach_length, int *offset_r)
+{
+
+ SoupSoapMessage *msg;
+ SoupSoapResponse *response;
+ EGwConnectionStatus status;
+ SoupSoapParameter *param ;
+ char *buffer = NULL, *buf_length = NULL, *o_return = NULL;
+
+ g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_OBJECT);
+
+ /* build the SOAP message */
+ msg = e_gw_message_new_with_header (cnc->priv->uri, cnc->priv->session_id, "getAttachmentRequest");
+ if (!msg) {
+ g_warning (G_STRLOC ": Could not build SOAP message");
+ return E_GW_CONNECTION_STATUS_UNKNOWN;
+ }
+
+
+ e_gw_message_write_string_parameter (msg, "id", NULL, id);
+ e_gw_message_write_int_parameter (msg, "offset", NULL, offset);
+ e_gw_message_write_int_parameter (msg, "length", NULL, length);
+
+ e_gw_message_write_footer (msg);
+
+ /* send message to server */
+ response = e_gw_connection_send_message (cnc, msg);
+ if (!response) {
+ g_object_unref (msg);
+ return E_GW_CONNECTION_STATUS_NO_RESPONSE;
+ }
+
+ status = e_gw_connection_parse_response_status (response);
+ if (status != E_GW_CONNECTION_STATUS_OK) {
+ if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
+ reauthenticate (cnc);
+ g_object_unref (response);
+ g_object_unref (msg);
+ return status;
+ }
+
+
+ param = soup_soap_response_get_first_parameter_by_name (response, "part") ;
+ if (param) {
+ buf_length = soup_soap_parameter_get_property (param, "length") ;
+ o_return = soup_soap_parameter_get_property (param, "offset") ;
+ buffer = soup_soap_parameter_get_string_value (param) ;
+ }
+
+ if (buffer && buf_length) {
+ int len = atoi (buf_length) ;
+ *attachment = g_strdup (buffer);
+ *attach_length = len;
+ *offset_r = atoi (o_return);
+ }
+
+ /* free memory */
+ g_free (buffer) ;
+ g_free (buf_length) ;
+ g_free (o_return);
+ g_object_unref (response);
+ g_object_unref (msg);
+
+ return E_GW_CONNECTION_STATUS_OK;
+}
EGwConnectionStatus
e_gw_connection_add_item (EGwConnection *cnc, const char *container, const char *id)
Index: servers/groupwise/e-gw-connection.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.h,v
retrieving revision 1.68
diff -u -p -r1.68 e-gw-connection.h
--- servers/groupwise/e-gw-connection.h 31 Aug 2005 04:26:07 -0000 1.68
+++ servers/groupwise/e-gw-connection.h 17 Mar 2006 05:22:38 -0000
@@ -144,6 +144,7 @@ EGwConnectionStatus e_gw_connection_get_
EGwConnectionStatus e_gw_connection_create_folder(EGwConnection *cnc, const char *parent_name,const char *folder_name, char **container_id) ;
EGwConnectionStatus
e_gw_connection_get_attachment (EGwConnection *cnc, const char *id, int offset, int length, const char **attachment, int *attach_length) ;
+EGwConnectionStatus e_gw_connection_get_attachment_base64 (EGwConnection *cnc, const char *id, int offset, int length, const char **attachment, int *attach_length, int *offset_r);
EGwConnectionStatus e_gw_connection_add_item (EGwConnection *cnc, const char *container, const char *id) ;
EGwConnectionStatus e_gw_connection_add_items (EGwConnection *cnc, const char *container, GList *item_ids) ;
EGwConnectionStatus e_gw_connection_move_item (EGwConnection *cnc, const char *id, const char *dest_container_id, const char *from_container_id);

View File

@ -1,13 +1,9 @@
Index: addressbook/backends/groupwise/e-book-backend-groupwise.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c,v
retrieving revision 1.74
diff -u -p -r1.74 e-book-backend-groupwise.c
--- addressbook/backends/groupwise/e-book-backend-groupwise.c 10 Apr 2006 11:02:36 -0000 1.74
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 16 Apr 2006 07:30:20 -0000
@@ -2334,6 +2334,11 @@ find_book_view (EBookBackendGroupwise *e
return NULL;
EIterator *iter = e_list_get_iterator (views);
=== modified file 'addressbook/backends/groupwise/e-book-backend-groupwise.c'
--- addressbook/backends/groupwise/e-book-backend-groupwise.c 2007-12-18 16:36:30 +0000
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 2007-12-18 16:42:36 +0000
@@ -2421,6 +2421,11 @@
EList *views = e_book_backend_get_book_views (E_BOOK_BACKEND (ebgw));
EIterator *iter;
EDataBookView *rv = NULL;
+
+ if (!iter) {
@ -15,5 +11,6 @@ diff -u -p -r1.74 e-book-backend-groupwise.c
+ return NULL;
+ }
if (e_iterator_is_valid (iter)) {
/* just always use the first book view */
if (!views)
return NULL;

View File

@ -1,154 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.117
diff -u -p -r1.117 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 11 Mar 2006 12:27:42 -0000 1.117
+++ camel/providers/groupwise/camel-groupwise-folder.c 13 Mar 2006 06:27:53 -0000
@@ -881,7 +881,8 @@ groupwise_refresh_info(CamelFolder *fold
/* We probably could not get the messages the first time. (get_folder) failed???!
* so do a get_folder again. And hope that it works
*/
- gw_store_reload_folder ((CamelStore *)gw_store, folder->name, 0, ex);
+ g_print("Reloading folder...something wrong with the summary....\n");
+ gw_store_reload_folder (gw_store, folder, 0, ex);
}
}
Index: camel-groupwise-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
retrieving revision 1.93
diff -u -p -r1.93 camel-groupwise-store.c
--- camel/providers/groupwise/camel-groupwise-store.c 11 Mar 2006 09:52:29 -0000 1.93
+++ camel/providers/groupwise/camel-groupwise-store.c 13 Mar 2006 06:27:54 -0000
@@ -674,8 +674,112 @@ groupwise_get_folder (CamelStore *store,
}
void
-gw_store_reload_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex)
+gw_store_reload_folder (CamelGroupwiseStore *gw_store, CamelFolder *folder, guint32 flags, CamelException *ex)
{
+ CamelGroupwiseStorePrivate *priv = gw_store->priv;
+ CamelGroupwiseSummary *summary;
+ char *container_id, *folder_dir, *storage_path;
+ EGwConnectionStatus status;
+ GList *list = NULL;
+ gboolean done = FALSE;
+ const char *position = E_GW_CURSOR_POSITION_END;
+ int count = 0, cursor, summary_count = 0;
+ CamelStoreInfo *si = NULL;
+ guint total;
+
+ camel_exception_clear (ex);
+
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
+
+ if (!camel_groupwise_store_connected (gw_store, ex)) {
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
+ return;
+ }
+
+ if (!E_IS_GW_CONNECTION( priv->cnc)) {
+ if (!groupwise_connect (CAMEL_SERVICE((CamelStore*)gw_store), ex)) {
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE, _("Authentication failed"));
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
+ return;
+ }
+ }
+
+ container_id = g_strdup (g_hash_table_lookup (priv->name_hash, folder->full_name));
+
+ si = camel_store_summary_path ((CamelStoreSummary *)gw_store->summary, folder->name);
+ if (si) {
+ total = si->total;
+ camel_store_summary_info_free ((CamelStoreSummary *)(gw_store)->summary, si);
+ }
+
+ summary = (CamelGroupwiseSummary *) folder->summary;
+ camel_folder_summary_clear (folder->summary);
+ camel_folder_summary_save (folder->summary);
+
+ summary_count = camel_folder_summary_count (folder->summary);
+ if(!summary_count || !summary->time_string) {
+ d(g_print ("\n\n** %s **: Summary missing???? Reloading summary....\n\n", folder->name);)
+
+ status = e_gw_connection_create_cursor (priv->cnc, container_id,
+ "peek id recipient attachments distribution subject status options priority startDate created delivered size",
+ NULL,
+ &cursor);
+ if (status != E_GW_CONNECTION_STATUS_OK) {
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
+ g_free (container_id);
+ return;
+ }
+
+ camel_operation_start (NULL, _("Fetching summary information for new messages in %s"), folder->name);
+
+ while (!done) {
+ status = e_gw_connection_read_cursor (priv->cnc, container_id,
+ cursor, FALSE,
+ CURSOR_ITEM_LIMIT, position, &list);
+ if (status != E_GW_CONNECTION_STATUS_OK) {
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
+ e_gw_connection_destroy_cursor (priv->cnc, container_id, cursor);
+ camel_folder_summary_clear (folder->summary);
+ camel_folder_summary_save (folder->summary);
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
+ camel_operation_end (NULL);
+ camel_object_unref (folder);
+ g_free (container_id);
+ return;
+ }
+
+ count += g_list_length (list);
+
+ if (total > 0)
+ camel_operation_progress (NULL, (100*count)/total);
+ gw_update_summary (folder, list, ex);
+
+ if (!list)
+ done = TRUE;
+ g_list_foreach (list, (GFunc)g_object_unref, NULL);
+ g_list_free (list);
+ list = NULL;
+ position = E_GW_CURSOR_POSITION_CURRENT;
+ }
+
+ e_gw_connection_destroy_cursor (priv->cnc, container_id, cursor);
+
+ camel_operation_end (NULL);
+ }
+
+ if (done) {
+ if (summary->time_string)
+ g_free (summary->time_string);
+ summary->time_string = g_strdup (e_gw_connection_get_server_time (priv->cnc));
+ }
+
+ camel_folder_summary_save (folder->summary);
+
+ gw_store->current_folder = folder;
+
+ g_free (container_id);
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
+ return;
}
CamelFolderInfo *
Index: camel/providers/groupwise/camel-groupwise-store.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.h,v
retrieving revision 1.12
diff -u -p -r1.12 camel-groupwise-store.h
--- camel/providers/groupwise/camel-groupwise-store.h 11 Mar 2006 09:52:29 -0000 1.12
+++ camel/providers/groupwise/camel-groupwise-store.h 13 Mar 2006 06:27:54 -0000
@@ -82,7 +82,7 @@ char *storage_path_lookup (CamelGroupwis
const char *groupwise_base_url_lookup (CamelGroupwiseStorePrivate *priv);
CamelFolderInfo * create_junk_folder (CamelStore *store);
gboolean camel_groupwise_store_connected (CamelGroupwiseStore *store, CamelException *ex);
-void gw_store_reload_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
+void gw_store_reload_folder (CamelGroupwiseStore *store, CamelFolder *folder, guint32 flags, CamelException *ex);
#ifdef __cplusplus
}

View File

@ -1,120 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.120
diff -u -p -r1.120 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 17 Mar 2006 05:42:00 -0000 1.120
+++ camel/providers/groupwise/camel-groupwise-folder.c 20 Mar 2006 08:12:51 -0000
@@ -1006,7 +1006,7 @@ groupwise_refresh_folder(CamelFolder *fo
if (gw_store->current_folder != folder) {
gw_store->current_folder = folder;
}
-
+
if (list) {
gw_update_cache (folder, list, ex, FALSE);
}
@@ -1051,6 +1051,7 @@ void
gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean uid_flag)
{
CamelGroupwiseMessageInfo *mi = NULL;
+ CamelMessageInfo *pmi = NULL;
CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
CamelGroupwiseStorePrivate *priv = gw_store->priv;
@@ -1105,13 +1105,6 @@ gw_update_cache (CamelFolder *folder, GL
id = (char *) item_list->data;
camel_operation_progress (NULL, (100*i)/total_items);
- cache_stream = camel_data_cache_get (gw_folder->cache, "cache", id, ex);
- if (cache_stream) {
- camel_object_unref (cache_stream);
- cache_stream = NULL;
- i++;
- continue;
- }
status = e_gw_connection_get_item (cnc, container_id, id, "peek default distribution recipient message attachments subject notification created recipientStatus status size", &item);
if (status != E_GW_CONNECTION_STATUS_OK) {
@@ -1121,9 +1114,16 @@ gw_update_cache (CamelFolder *folder, GL
/************************ First populate summary *************************/
mi = NULL;
- mi = (CamelGroupwiseMessageInfo *)camel_folder_summary_uid (folder->summary, id);
- if (mi) {
+ pmi = NULL;
+ pmi = camel_folder_summary_uid (folder->summary, id);
+ if (pmi) {
exists = TRUE;
+ camel_message_info_ref (pmi);
+ mi = (CamelGroupwiseMessageInfo *)camel_message_info_clone(pmi);
+ /*
+ pmi->summary = folder->summary;
+ mi->info.summary = folder->summary;
+ */
}
if (!exists) {
@@ -1223,18 +1223,26 @@ gw_update_cache (CamelFolder *folder, GL
mi->info.date_sent = mi->info.date_received = actual_time;
}
}
+#if 0
if (exists)
g_free(mi->info.uid);
mi->info.uid = g_strdup(e_gw_item_get_id(item));
- if (!exists)
+#endif
+ if (!exists) {
+ mi->info.uid = g_strdup (e_gw_item_get_id(item));
mi->info.size = e_gw_item_get_mail_size (item);
- if (!exists)
mi->info.subject = camel_pstring_strdup(e_gw_item_get_subject(item));
+ }
if (exists) {
- camel_folder_change_info_change_uid (changes, e_gw_item_get_id (item));
- camel_message_info_free (&mi->info);
+ /*
+ camel_folder_change_info_change_uid (changes, mi->info.uid);
+ camel_message_info_free (&mi->info);*/
+ camel_folder_summary_remove(folder->summary, pmi);
+ camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
+ camel_folder_change_info_add_uid (changes, mi->info.uid);
+ camel_message_info_free (pmi);
} else {
camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
camel_folder_change_info_add_uid (changes, mi->info.uid);
@@ -1248,11 +1256,11 @@ gw_update_cache (CamelFolder *folder, GL
if (!strcmp (folder->full_name, "Sent Items"))
exists = FALSE;
/******************** Begine Caching ************************/
- mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
- if (mail_msg)
- camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
/* add to cache if its a new message*/
if (!exists) {
+ mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
+ if (mail_msg)
+ camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", id, NULL))) {
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) mail_msg, cache_stream) == -1 || camel_stream_flush (cache_stream) == -1)
@@ -1678,7 +1686,7 @@ static void
gw_update_all_items (CamelFolder *folder, GList *item_list, CamelException *ex)
{
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
- GPtrArray *summary = camel_folder_get_summary (folder);
+ GPtrArray *summary = NULL;
int index = 0;
GList *temp;
CamelFolderChangeInfo *changes = NULL;
@@ -1687,6 +1695,7 @@ gw_update_all_items (CamelFolder *folder
item_list = g_list_reverse (item_list);
+ summary = camel_folder_get_summary (folder);
/*item_ids : List of ids from the summary*/
while (index < summary->len) {
info = g_ptr_array_index (summary, index);

View File

@ -1,16 +0,0 @@
Index: servers/groupwise/e-gw-connection.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.c,v
retrieving revision 1.138
diff -u -p -r1.138 e-gw-connection.c
--- servers/groupwise/e-gw-connection.c 23 Jan 2006 11:07:49 -0000 1.138
+++ servers/groupwise/e-gw-connection.c 15 Mar 2006 05:48:03 -0000
@@ -2390,7 +2390,7 @@ EGwConnectionStatus e_gw_connection_get_
g_object_unref (msg);
return E_GW_CONNECTION_STATUS_INVALID_RESPONSE;
}
- if (start_date && *start_date && !strcmp (message_list, "New")) {
+ if (start_date && *start_date && (((!strcmp (message_list, "New")) || (!strcmp (message_list, "Modified"))))) {
subparam = soup_soap_response_get_first_parameter_by_name (response, "startDate");
if (subparam) {
char *date;

View File

@ -1,167 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.116
diff -u -p -r1.116 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 11 Mar 2006 09:52:29 -0000 1.116
+++ camel/providers/groupwise/camel-groupwise-folder.c 11 Mar 2006 12:25:51 -0000
@@ -81,7 +81,7 @@ static void groupwise_transfer_messages_
static int gw_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args);
void convert_to_calendar (EGwItem *item, char **str, int *len);
static void convert_to_task (EGwItem *item, char **str, int *len);
-static void gw_update_all_items ( CamelFolder *folder, GSList *item_list, CamelException *ex);
+static void gw_update_all_items ( CamelFolder *folder, GList *item_list, CamelException *ex);
static void groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item);
static void groupwise_populate_msg_body_from_item (EGwConnection *cnc, CamelMultipart *multipart, EGwItem *item, char *body);
static void groupwise_msg_set_recipient_list (CamelMimeMessage *msg, EGwItem *item);
@@ -586,7 +586,7 @@ groupwise_sync (CamelFolder *folder, gbo
CamelGroupwiseStorePrivate *priv = gw_store->priv;
CamelMessageInfo *info = NULL;
CamelGroupwiseMessageInfo *gw_info;
- GList *read_items = NULL, *deleted_items = NULL;
+ GList *read_items = NULL;
flags_diff_t diff;
const char *container_id;
EGwConnectionStatus status;
@@ -761,7 +761,7 @@ update_update (CamelSession *session, Ca
EGwConnectionStatus status;
CamelException *ex = NULL;
- GList *item_list;
+ GList *item_list, *items_full_list = NULL, *last_element=NULL;
int cursor = 0;
const char *position = E_GW_CURSOR_POSITION_END;
gboolean done;
@@ -787,16 +787,48 @@ update_update (CamelSession *session, Ca
if (!item_list || g_list_length (item_list) == 0)
done = TRUE;
else {
- for (;item_list; item_list = g_list_next (item_list)) {
- m->slist = g_slist_prepend (m->slist, (char *)item_list->data);
+
+ /* item_list is prepended to items_full_list and not the other way
+ because when we have a large number of items say 50000,
+ for each iteration there will be more elements in items_full_list
+ and less elements in item_list */
+
+ last_element = g_list_last (item_list);
+ if (items_full_list) {
+ last_element->next = items_full_list;
+ items_full_list->prev = item_list;
}
+ items_full_list = item_list;
}
- g_list_free (item_list);
position = E_GW_CURSOR_POSITION_CURRENT;
}
e_gw_connection_destroy_cursor (m->cnc, m->container_id, cursor);
- gw_update_all_items (m->folder, m->slist, ex);
+ /* Take out only the first part in the list until the @ since it is guaranteed
+ to be unique only until that symbol */
+
+ if (items_full_list) {
+ int i;
+ item_list = items_full_list;
+
+ while (item_list->next) {
+ i = 0;
+ while (((const char *)item_list->data)[i++]!='@');
+ ((char *)item_list->data)[i-1] = '\0';
+ item_list = item_list->next;
+ }
+
+ i = 0;
+ while (((const char *)item_list->data)[i++]!='@');
+ ((char *)item_list->data)[i-1] = '\0';
+ }
+
+ gw_update_all_items (m->folder, items_full_list, ex);
+
+ if (items_full_list) {
+ g_list_foreach (items_full_list, (GFunc)g_free, NULL);
+ g_list_free (items_full_list);
+ }
}
static void
@@ -1594,55 +1626,45 @@ groupwise_folder_item_to_msg( CamelFolde
return msg;
}
-static gint
-string_cmp(gconstpointer a, gconstpointer b)
-{
- int ret;
- char **tmp1, **tmp2;
-
- tmp1 = g_strsplit ((const char *)a, "@", -1);
- tmp2 = g_strsplit ((const char *)b, "@", -1);
- ret = strcmp (tmp1[0], tmp2[0]);
- g_strfreev (tmp1);
- g_strfreev (tmp2);
- return ret;
-}
-
static void
-gw_update_all_items ( CamelFolder *folder, GSList *item_list, CamelException *ex)
+gw_update_all_items (CamelFolder *folder, GList *item_list, CamelException *ex)
{
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
GPtrArray *summary = camel_folder_get_summary (folder);
- int index = 0;
- GSList *item_ids = NULL, *l = NULL;
+ int index = 0, i;
+ GList *temp;
+ char *uid;
CamelFolderChangeInfo *changes = NULL;
-
+ CamelMessageInfo *info;
changes = camel_folder_change_info_new ();
+
/*item_ids : List of ids from the summary*/
while (index < summary->len) {
- CamelMessageInfo *info = g_ptr_array_index (summary, index);
- item_ids = g_slist_append (item_ids, info->uid);
- index ++;
- }
- l = item_ids;
-
- /*item_list : List of ids from the server*/
- for (; item_ids != NULL ; item_ids = g_slist_next (item_ids)) {
- GSList *temp = NULL;
+ info = g_ptr_array_index (summary, index);
+ temp = NULL;
+ i = 0;
+ uid = g_strdup (info->uid);
+
+ while (((const char *)uid)[i++]!='@');
+ ((char *)uid)[i-1] = '\0';
- temp = g_slist_find_custom (item_list, (const char *)item_ids->data, (GCompareFunc) string_cmp);
+ temp = g_list_find_custom (item_list, (const char*)uid, (GCompareFunc) strcmp);
+ g_free (uid);
+
if (!temp) {
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
- camel_folder_summary_remove_uid (folder->summary, (const char *)item_ids->data);
- camel_data_cache_remove(gw_folder->cache, "cache", (const char *)item_ids->data, ex);
- camel_folder_change_info_remove_uid(changes, (const char *)item_ids->data);
+ camel_folder_summary_remove_uid (folder->summary, info->uid);
+ camel_data_cache_remove (gw_folder->cache, "cache", info->uid, ex);
+ camel_folder_change_info_remove_uid (changes, info->uid);
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
- }
+ } else
+ item_list = g_list_remove(item_list, temp);
+
+ index ++;
}
- camel_object_trigger_event (folder, "folder_changed", changes);
+ camel_object_trigger_event (folder, "folder_changed", changes);
camel_folder_free_summary (folder, summary);
- g_slist_free (l);
}
static void

View File

@ -1,110 +0,0 @@
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -r1.91 -r1.92
--- camel/providers/groupwise/camel-groupwise-store.c 2006/01/31 06:55:50 1.91
+++ camel/providers/groupwise/camel-groupwise-store.c 2006/03/09 12:58:56 1.92
@@ -1305,11 +1305,7 @@
if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_AVAIL
&& camel_service_connect ((CamelService *)store, ex))
return TRUE;
-
- if (!camel_exception_is_set (ex))
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("You must be working online to complete this operation"));
-
+ /*Not online, so return FALSE*/
return FALSE;
}
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -r1.115 -r1.116
--- camel/providers/groupwise/camel-groupwise-folder.c 2006/03/09 10:54:43 1.115
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006/03/11 09:52:29 1.116
@@ -849,7 +849,7 @@
/* We probably could not get the messages the first time. (get_folder) failed???!
* so do a get_folder again. And hope that it works
*/
- camel_store_get_folder ((CamelStore *)gw_store, folder->name, 0, ex);
+ gw_store_reload_folder ((CamelStore *)gw_store, folder->name, 0, ex);
}
}
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.c,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -r1.92 -r1.93
--- camel/providers/groupwise/camel-groupwise-store.c 2006/03/09 12:58:56 1.92
+++ camel/providers/groupwise/camel-groupwise-store.c 2006/03/11 09:52:29 1.93
@@ -267,8 +267,11 @@
d("in groupwise store connect\n");
- if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
+/* if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
(service->status == CAMEL_SERVICE_DISCONNECTED))
+ return FALSE; */
+
+ if (((CamelOfflineStore *) store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL)
return FALSE;
if (!priv) {
@@ -592,10 +595,10 @@
return NULL;
}
g_free (folder_dir);
-
+
si = camel_store_summary_path ((CamelStoreSummary *)gw_store->summary, folder_name);
if (si) {
- camel_object_get (folder, NULL, CAMEL_FOLDER_TOTAL, &total, NULL);
+ total = si->total;
camel_store_summary_info_free ((CamelStoreSummary *)(gw_store)->summary, si);
}
@@ -670,6 +673,11 @@
return folder;
}
+void
+gw_store_reload_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex)
+{
+}
+
CamelFolderInfo *
convert_to_folder_info (CamelGroupwiseStore *store, EGwContainer *container, const char *url, CamelException *ex)
{
@@ -754,10 +762,11 @@
if (e_gw_container_get_is_shared_by_me (container))
fi->flags |= CAMEL_FOLDER_SHARED_BY_ME;
- if (type == E_GW_CONTAINER_TYPE_INBOX) {
+ /*if (type == E_GW_CONTAINER_TYPE_INBOX) {
fi->total = -1;
fi->unread = -1;
- } else if (type == E_GW_CONTAINER_TYPE_TRASH) {
+ } else if (type == E_GW_CONTAINER_TYPE_TRASH) {*/
+ if (type == E_GW_CONTAINER_TYPE_TRASH) {
fi->total = e_gw_container_get_total_count (container);
fi->unread = 0;
}else {
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-store.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- camel/providers/groupwise/camel-groupwise-store.h 2005/09/18 18:21:10 1.11
+++ camel/providers/groupwise/camel-groupwise-store.h 2006/03/11 09:52:29 1.12
@@ -82,6 +82,7 @@
const char *groupwise_base_url_lookup (CamelGroupwiseStorePrivate *priv);
CamelFolderInfo * create_junk_folder (CamelStore *store);
gboolean camel_groupwise_store_connected (CamelGroupwiseStore *store, CamelException *ex);
+void gw_store_reload_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
#ifdef __cplusplus
}

View File

@ -1,195 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.118
diff -u -p -r1.118 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 13 Mar 2006 06:31:04 -0000 1.118
+++ camel/providers/groupwise/camel-groupwise-folder.c 15 Mar 2006 08:44:51 -0000
@@ -85,7 +85,7 @@ static void gw_update_all_items ( CamelF
static void groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item);
static void groupwise_populate_msg_body_from_item (EGwConnection *cnc, CamelMultipart *multipart, EGwItem *item, char *body);
static void groupwise_msg_set_recipient_list (CamelMimeMessage *msg, EGwItem *item);
-static void gw_update_cache ( CamelFolder *folder, GList *item_list,CamelException *ex);
+static void gw_update_cache ( CamelFolder *folder, GList *item_list, CamelException *ex, gboolean uid_flag);
static CamelMimeMessage *groupwise_folder_item_to_msg ( CamelFolder *folder, EGwItem *item, CamelException *ex );
@@ -796,7 +796,7 @@ update_update (CamelSession *session, Ca
last_element = g_list_last (item_list);
if (items_full_list) {
last_element->next = items_full_list;
- items_full_list->prev = item_list;
+ items_full_list->prev = last_element;
}
items_full_list = item_list;
}
@@ -807,7 +807,7 @@ update_update (CamelSession *session, Ca
/* Take out only the first part in the list until the @ since it is guaranteed
to be unique only until that symbol */
- if (items_full_list) {
+ /*if (items_full_list) {
int i;
item_list = items_full_list;
@@ -821,14 +821,10 @@ update_update (CamelSession *session, Ca
i = 0;
while (((const char *)item_list->data)[i++]!='@');
((char *)item_list->data)[i-1] = '\0';
- }
+ }*/
+ g_print ("\nNumber of items in the folder: %d \n", g_list_length(items_full_list));
gw_update_all_items (m->folder, items_full_list, ex);
-
- if (items_full_list) {
- g_list_foreach (items_full_list, (GFunc)g_free, NULL);
- g_list_free (items_full_list);
- }
}
static void
@@ -947,6 +943,8 @@ groupwise_refresh_folder(CamelFolder *fo
time_string = g_strdup (((CamelGroupwiseSummary *) folder->summary)->time_string);
t_str = g_strdup (time_string);
+
+#if 0
/*Get the New Items*/
status = e_gw_connection_get_quick_messages (cnc, container_id,
"peek id",
@@ -973,17 +971,29 @@ groupwise_refresh_folder(CamelFolder *fo
slist = NULL;
t_str = g_strdup (time_string);
-
+#endif
+
/*Get those items which have been modifed*/
+
status = e_gw_connection_get_quick_messages (cnc, container_id,
"peek id",
&t_str, "Modified", NULL, NULL, -1, &slist);
- g_free (t_str), t_str = NULL;
+
if (status != E_GW_CONNECTION_STATUS_OK) {
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
goto end3;
}
+ /* The storing of time-stamp to summary code below should be commented if the
+ above commented code is uncommented */
+
+ if (summary->time_string)
+ g_free (summary->time_string);
+
+ summary->time_string = g_strdup (t_str);
+
+ g_free (t_str), t_str = NULL;
+
for ( sl = slist ; sl != NULL; sl = sl->next)
list = g_list_append (list, sl->data);
@@ -995,7 +1005,7 @@ groupwise_refresh_folder(CamelFolder *fo
}
if (list) {
- gw_update_cache (folder, list, ex);
+ gw_update_cache (folder, list, ex, FALSE);
}
@@ -1035,7 +1045,7 @@ end1:
}
void
-gw_update_cache ( CamelFolder *folder, GList *list, CamelException *ex)
+gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean uid_flag)
{
CamelGroupwiseMessageInfo *mi = NULL;
CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
@@ -1072,7 +1082,7 @@ gw_update_cache ( CamelFolder *folder, G
camel_operation_start (NULL, _("Fetching summary information for new messages in %s"), folder->name);
for ( ; item_list != NULL ; item_list = g_list_next (item_list) ) {
- EGwItem *temp_item = (EGwItem *)item_list->data;
+ EGwItem *temp_item ;
EGwItem *item;
EGwItemType type = E_GW_ITEM_TYPE_UNKNOWN;
EGwItemOrganizer *org;
@@ -1084,7 +1094,12 @@ gw_update_cache ( CamelFolder *folder, G
CamelMimeMessage *mail_msg = NULL;
exists = FALSE;
- id = e_gw_item_get_id (temp_item);
+
+ if (uid_flag == FALSE) {
+ temp_item = (EGwItem *)item_list->data;
+ id = e_gw_item_get_id (temp_item);
+ } else
+ id = (char *) item_list->data;
camel_operation_progress (NULL, (100*i)/total_items);
cache_stream = camel_data_cache_get (gw_folder->cache, "cache", id, ex);
@@ -1632,39 +1647,48 @@ gw_update_all_items (CamelFolder *folder
{
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
GPtrArray *summary = camel_folder_get_summary (folder);
- int index = 0, i;
+ int index = 0;
GList *temp;
- char *uid;
CamelFolderChangeInfo *changes = NULL;
CamelMessageInfo *info;
changes = camel_folder_change_info_new ();
+ item_list = g_list_reverse (item_list);
+
/*item_ids : List of ids from the summary*/
while (index < summary->len) {
info = g_ptr_array_index (summary, index);
temp = NULL;
- i = 0;
- uid = g_strdup (info->uid);
- while (((const char *)uid)[i++]!='@');
- ((char *)uid)[i-1] = '\0';
+ if (item_list) {
+ temp = g_list_find_custom (item_list, (const char *)info->uid, (GCompareFunc) strcmp);
+ }
- temp = g_list_find_custom (item_list, (const char*)uid, (GCompareFunc) strcmp);
- g_free (uid);
-
if (!temp) {
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
camel_folder_summary_remove_uid (folder->summary, info->uid);
camel_data_cache_remove (gw_folder->cache, "cache", info->uid, ex);
camel_folder_change_info_remove_uid (changes, info->uid);
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
- } else
- item_list = g_list_remove(item_list, temp);
-
+ } else {
+ item_list = g_list_delete_link (item_list, temp);
+ }
index ++;
}
-
+
camel_object_trigger_event (folder, "folder_changed", changes);
+
+ if (item_list) {
+ CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
+
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
+ gw_update_cache (folder, item_list, ex, TRUE);
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
+
+ g_list_foreach (item_list, (GFunc)g_free, NULL);
+ g_list_free (item_list);
+ }
+
camel_folder_free_summary (folder, summary);
}

View File

@ -1,18 +0,0 @@
--- camel/providers/groupwise/camel-groupwise-store.c.orig 2006-03-20 16:30:38.488752753 +0100
+++ camel/providers/groupwise/camel-groupwise-store.c 2006-03-20 16:38:37.082768906 +0100
@@ -462,6 +462,15 @@ groupwise_build_folder_info(CamelGroupwi
else
name++;
+ if (!strcmp (folder_name, "Sent Items"))
+ fi->flags |= CAMEL_FOLDER_TYPE_SENT;
+ else if (!strcmp (folder_name, "Mailbox"))
+ fi->flags |= CAMEL_FOLDER_TYPE_INBOX;
+ else if (!strcmp (folder_name, "Trash"))
+ fi->flags |= CAMEL_FOLDER_TYPE_TRASH;
+ else if (!strcmp (folder_name, "Junk Mail"))
+ fi->flags |= CAMEL_FOLDER_TYPE_JUNK;
+
fi->name = g_strdup(name);
return fi;
}

View File

@ -1,286 +0,0 @@
Index: calendar/backends/groupwise/e-cal-backend-groupwise.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v
retrieving revision 1.173
diff -u -p -r1.173 e-cal-backend-groupwise.c
--- calendar/backends/groupwise/e-cal-backend-groupwise.c 23 Jan 2006 11:09:58 -0000 1.173
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c 24 Mar 2006 14:42:22 -0000
@@ -79,6 +79,8 @@ static void e_cal_backend_groupwise_fina
static void sanitize_component (ECalBackendSync *backend, ECalComponent *comp, char *server_uid);
static ECalBackendSyncStatus
e_cal_backend_groupwise_add_timezone (ECalBackendSync *backend, EDataCal *cal, const char *tzobj);
+static const char * get_gw_item_id (icalcomponent *icalcomp);
+static void get_retract_data (ECalComponent *comp, const char **retract_comment, gboolean *all_instances);
#define PARENT_TYPE E_TYPE_CAL_BACKEND_SYNC
static ECalBackendClass *parent_class = NULL;
@@ -219,6 +221,7 @@ populate_cache (ECalBackendGroupwise *cb
return E_GW_CONNECTION_STATUS_OK;
}
+
static gboolean
compare_prefix (gconstpointer a, gconstpointer b)
{
@@ -467,7 +470,6 @@ get_deltas (gpointer handle)
needs_to_get = TRUE;
} else {
cache_keys = g_slist_delete_link (cache_keys, remove);
- g_message ("******** found \n");
}
g_free (real_key);
@@ -476,7 +478,6 @@ get_deltas (gpointer handle)
for (l = cache_keys; l ; l = g_slist_next (l)) {
/* assumes rid is null - which works for now */
ECalComponent *comp = NULL;
- GSList *comp_list = NULL;
ECalComponentVType vtype;
comp = e_cal_backend_cache_get_component (cache, (const char *) l->data, NULL);
@@ -1632,10 +1633,9 @@ e_cal_backend_groupwise_internal_get_tim
icaltimezone *zone;
zone = icaltimezone_get_builtin_timezone_from_tzid (tzid);
-
if (!zone)
return icaltimezone_get_utc_timezone();
-
+
return zone;
}
@@ -1791,6 +1791,44 @@ e_cal_backend_groupwise_create_object (E
return GNOME_Evolution_Calendar_Success;
}
+static void
+get_retract_data (ECalComponent *comp, const char **retract_comment, gboolean *all_instances)
+{
+ icalcomponent *icalcomp = NULL;
+ icalproperty *icalprop = NULL;
+ gboolean is_instance = FALSE;
+ const char *x_ret = NULL, *x_recur = NULL;
+
+ is_instance = e_cal_component_is_instance (comp);
+ icalcomp = e_cal_component_get_icalcomponent (comp);
+ icalprop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY);
+ while (icalprop) {
+ const char *x_name;
+
+ x_name = icalproperty_get_x_name (icalprop);
+ /* This property will be set only if the user is an organizer */
+ if (!strcmp (x_name, "X-EVOLUTION-RETRACT-COMMENT")) {
+ x_ret = icalproperty_get_x (icalprop);
+ if (!strcmp (x_ret, "0")) {
+ *retract_comment = NULL;
+ } else
+ *retract_comment = x_ret;
+ }
+
+ if (is_instance && !strcmp (x_name, "X-EVOLUTION-RECUR-MOD")) {
+ x_recur = icalproperty_get_x (icalprop);
+ if (!strcmp (x_recur, "All"))
+ *all_instances = TRUE;
+ else
+ *all_instances = FALSE;
+ }
+
+ if (x_ret && (!is_instance || x_recur))
+ break;
+ icalprop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY);
+ }
+}
+
static ECalBackendSyncStatus
e_cal_backend_groupwise_modify_object (ECalBackendSync *backend, EDataCal *cal, const char *calobj,
CalObjModType mod, char **old_object, char **new_object)
@@ -1838,7 +1876,7 @@ e_cal_backend_groupwise_modify_object (E
if (e_cal_component_has_attendees (comp) &&
e_cal_backend_groupwise_utils_check_delegate (comp, e_gw_connection_get_user_email (priv->cnc))) {
const char *id = NULL, *recur_key = NULL;
-
+
item = e_gw_item_new_for_delegate_from_cal (cbgw, comp);
if (mod == CALOBJ_MOD_ALL && e_cal_component_is_instance (comp)) {
@@ -1848,21 +1886,19 @@ e_cal_backend_groupwise_modify_object (E
}
status = e_gw_connection_delegate_request (priv->cnc, item, id, NULL, NULL, recur_key);
-
+
if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
- status = e_gw_connection_delegate_request (priv->cnc, item, id, NULL, NULL, recur_key);
-
- if (status != E_GW_CONNECTION_STATUS_OK) {
- g_object_unref (comp);
- g_object_unref (cache_comp);
- return GNOME_Evolution_Calendar_OtherError;
- }
-
-
+ status = e_gw_connection_delegate_request (priv->cnc, item, id, NULL, NULL, recur_key);
+ if (status != E_GW_CONNECTION_STATUS_OK) {
+ g_object_unref (comp);
+ g_object_unref (cache_comp);
+ return GNOME_Evolution_Calendar_OtherError;
+ }
+
e_cal_backend_cache_put_component (priv->cache, comp);
*new_object = e_cal_component_get_as_string (comp);
break;
- }
+ }
item = e_gw_item_new_from_cal_component (priv->container_id, cbgw, comp);
cache_item = e_gw_item_new_from_cal_component (priv->container_id, cbgw, cache_comp);
@@ -2359,40 +2395,91 @@ e_cal_backend_groupwise_receive_objects
static ECalBackendSyncStatus
send_object (ECalBackendGroupwise *cbgw, EDataCal *cal, icalcomponent *icalcomp, icalproperty_method method)
{
- ECalComponent *comp, *found_comp;
+ ECalComponent *comp, *found_comp = NULL;
ECalBackendGroupwisePrivate *priv;
- ECalBackendSyncStatus status = GNOME_Evolution_Calendar_Success;
- char *uid, *comp_str;
+ ECalBackendSyncStatus status = GNOME_Evolution_Calendar_OtherError;
+ const char *uid = NULL, *rid = NULL;
priv = cbgw->priv;
comp = e_cal_component_new ();
e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (icalcomp));
+ rid = e_cal_component_get_recurid_as_string (comp);
e_cal_component_get_uid (comp, (const char **) &uid);
- found_comp = e_cal_backend_cache_get_component (priv->cache, uid, NULL);
+ found_comp = e_cal_backend_cache_get_component (priv->cache, uid, rid);
+
+ if (!found_comp) {
+ g_object_unref (comp);
+ return GNOME_Evolution_Calendar_ObjectNotFound;
+ }
+
switch (priv->mode) {
case CAL_MODE_ANY :
case CAL_MODE_REMOTE :
- if (found_comp) {
- char *comp_str;
- status = e_cal_backend_groupwise_modify_object (E_CAL_BACKEND_SYNC (cbgw), cal, comp_str,
- CALOBJ_MOD_THIS, &comp_str, NULL);
- g_free (comp_str);
- } else
- status = e_cal_backend_groupwise_create_object (E_CAL_BACKEND_SYNC (cbgw), cal, &comp_str, NULL);
+ if (method == ICAL_METHOD_CANCEL) {
+ const char *retract_comment = NULL;
+ gboolean all_instances = FALSE;
+ const char *id = NULL;
+
+ get_retract_data (comp, &retract_comment, &all_instances);
+ id = get_gw_item_id (icalcomp);
+ status = e_gw_connection_retract_request (priv->cnc, id, retract_comment,
+ all_instances, FALSE);
+
+ if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
+ status = e_gw_connection_retract_request (priv->cnc, id, retract_comment,
+ all_instances, FALSE);
+ if (status == E_GW_CONNECTION_STATUS_OK) {
+ ECalComponentId *id = NULL;
+
+ if (all_instances) {
+ char *old_object = NULL;
+ GSList *l, *comp_list = e_cal_backend_cache_get_components_by_uid (priv->cache, uid);
+ for (l = comp_list; l; l = l->next) {
+ ECalComponent *comp = E_CAL_COMPONENT (l->data);
+ ECalComponentId *id = e_cal_component_get_id (comp);
+ char *object = e_cal_component_get_as_string (comp);
+
+ if (e_cal_backend_cache_remove_component (priv->cache, id->uid,
+ id->rid))
+ e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id, object, NULL);
+
+ e_cal_component_free_id (id);
+ g_free (object);
+ g_object_unref (comp);
+ }
+
+ g_slist_free (comp_list);
+ g_free (old_object);
+ } else {
+ id = e_cal_component_get_id (comp);
+ icalcomp = e_cal_component_get_icalcomponent (comp);
+ char * object = e_cal_component_get_as_string (comp);
+
+ if (e_cal_backend_cache_remove_component (priv->cache, id->uid,
+ id->rid)) {
+ e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id,
+ object, NULL);
+ }
+ g_free (object);
+ e_cal_component_free_id (id);
+ }
+ }
+ }
break;
case CAL_MODE_LOCAL :
/* in offline mode, we just update the cache */
- e_cal_backend_cache_put_component (priv->cache, comp);
+ status = GNOME_Evolution_Calendar_RepositoryOffline;
break;
default:
break;
}
g_object_unref (comp);
+ g_object_unref (found_comp);
return status;
}
@@ -2446,12 +2533,16 @@ e_cal_backend_groupwise_send_objects (EC
comp = e_cal_component_new ();
- if (e_cal_component_set_icalcomponent (comp, icalcomp)) {
+ if (e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (icalcomp))) {
GSList *attendee_list = NULL, *tmp;
e_cal_component_get_attendee_list (comp, &attendee_list);
/* convert this into GList */
- for (tmp = attendee_list; tmp; tmp = g_slist_next (tmp))
- *users = g_list_append (*users, tmp);
+ for (tmp = attendee_list; tmp; tmp = g_slist_next (tmp)) {
+ const char *attendee = tmp->data;
+
+ if (attendee)
+ *users = g_list_append (*users, g_strdup (attendee));
+ }
g_object_unref (comp);
}
Index: servers/groupwise/e-gw-connection.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.c,v
retrieving revision 1.141
diff -u -p -r1.141 e-gw-connection.c
--- servers/groupwise/e-gw-connection.c 23 Mar 2006 10:08:37 -0000 1.141
+++ servers/groupwise/e-gw-connection.c 3 Apr 2006 08:41:02 -0000
@@ -1463,7 +1463,16 @@ e_gw_connection_retract_request (EGwConn
soup_soap_message_start_element (msg, "items", NULL, NULL);
e_gw_message_write_string_parameter (msg, "item", NULL, id);
soup_soap_message_end_element (msg);
- /* comment, FALSE, FALSE to be filled in later. */
+
+ if (retract_all)
+ e_gw_message_write_string_parameter (msg, "retractingAllInstances", NULL, "1");
+
+ if (comment)
+ e_gw_message_write_string_parameter (msg, "comment", NULL, comment);
+
+ if (resend)
+ e_gw_message_write_string_parameter (msg, "retractCausedByResend", NULL, "1");
+
e_gw_message_write_footer (msg);
response = e_gw_connection_send_message (cnc, msg);

View File

@ -1,82 +0,0 @@
--- camel/providers/groupwise/camel-groupwise-folder.c.orig 2006-03-23 16:21:05.882346341 +0100
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006-03-23 16:21:53.346929567 +0100
@@ -902,6 +902,7 @@ groupwise_refresh_folder(CamelFolder *fo
char *container_id = NULL;
char *time_string = NULL, *t_str = NULL;
struct _folder_update_msg *msg;
+ gboolean check_all = FALSE;
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
g_warning ("In offline mode. Cannot refresh!!!\n");
@@ -947,7 +948,7 @@ groupwise_refresh_folder(CamelFolder *fo
time_string = g_strdup (((CamelGroupwiseSummary *) folder->summary)->time_string);
t_str = g_strdup (time_string);
-#if 0
+
/*Get the New Items*/
status = e_gw_connection_get_quick_messages (cnc, container_id,
"peek id",
@@ -963,18 +964,23 @@ groupwise_refresh_folder(CamelFolder *fo
*/
if (summary->time_string)
g_free (summary->time_string);
+
+
summary->time_string = g_strdup (t_str);
g_free (t_str);
t_str = NULL;
+ /*
for ( sl = slist ; sl != NULL; sl = sl->next)
- list = g_list_append (list, sl->data);
+ list = g_list_append (list, sl->data);*/
+ if (slist && g_slist_length(slist) != 0)
+ check_all = TRUE;
+
g_slist_free (slist);
slist = NULL;
t_str = g_strdup (time_string);
-#endif
/*Get those items which have been modifed*/
@@ -989,15 +995,16 @@ groupwise_refresh_folder(CamelFolder *fo
/* The storing of time-stamp to summary code below should be commented if the
above commented code is uncommented */
- if (summary->time_string)
+
+/* if (summary->time_string)
g_free (summary->time_string);
summary->time_string = g_strdup (t_str);
- g_free (t_str), t_str = NULL;
+ g_free (t_str), t_str = NULL;*/
for ( sl = slist ; sl != NULL; sl = sl->next)
- list = g_list_append (list, sl->data);
+ list = g_list_prepend (list, sl->data);
g_slist_free (slist);
slist = NULL;
@@ -1021,6 +1028,7 @@ groupwise_refresh_folder(CamelFolder *fo
* this folder, and update the summary.
*/
/*create a new session thread for the update all operation*/
+ if (check_all) {
msg = camel_session_thread_msg_new (session, &update_ops, sizeof(*msg));
msg->cnc = cnc;
msg->t_str = g_strdup (time_string);
@@ -1030,7 +1038,7 @@ groupwise_refresh_folder(CamelFolder *fo
camel_folder_freeze (folder);
camel_session_thread_queue (session, &msg->msg, 0);
/*thread creation and queueing done*/
-
+ }
end3:
g_list_foreach (list, (GFunc) g_object_unref, NULL);

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +0,0 @@
Index: calendar/backends/caldav/e-cal-backend-caldav.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/caldav/e-cal-backend-caldav.c,v
retrieving revision 1.5
diff -u -p -r1.5 e-cal-backend-caldav.c
--- calendar/backends/caldav/e-cal-backend-caldav.c 9 Feb 2006 06:12:05 -0000 1.5
+++ calendar/backends/caldav/e-cal-backend-caldav.c 23 Mar 2006 19:55:51 -0000
@@ -1491,6 +1491,10 @@ caldav_remove (ECalBackendSync *backend,
priv = E_CAL_BACKEND_CALDAV_GET_PRIVATE (cbdav);
g_mutex_lock (priv->lock);
+
+ if (priv->loaded != TRUE)
+ return GNOME_Evolution_Calendar_Success;
+
status = check_state (cbdav, &online);
if (status != GNOME_Evolution_Calendar_Success) {

View File

@ -1,16 +0,0 @@
Index: calendar/libecal/e-cal.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/libecal/e-cal.c,v
retrieving revision 1.125
diff -u -p -r1.125 e-cal.c
--- calendar/libecal/e-cal.c 4 Mar 2006 10:29:07 -0000 1.125
+++ calendar/libecal/e-cal.c 11 Apr 2006 13:29:57 -0000
@@ -3528,7 +3528,7 @@ process_detached_instances (GList *insta
ci->end = cid->end;
processed = TRUE;
- } else {
+ } else if (instance_recur_id.datetime.value && recur_id.datetime.value){
cmp = icaltime_compare (*instance_recur_id.datetime.value,
*recur_id.datetime.value);
if ((recur_id.type == E_CAL_COMPONENT_RANGE_THISPRIOR && cmp <= 0) ||

View File

@ -1,71 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.126
diff -u -p -r1.126 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 3 Apr 2006 06:36:11 -0000 1.126
+++ camel/providers/groupwise/camel-groupwise-folder.c 3 Apr 2006 06:42:45 -0000
@@ -491,7 +491,8 @@ update_junk_list (CamelStore *store, Cam
goto error;
email = g_strsplit_set (from, "<>", -1);
- if (!email[1])
+
+ if (!email || !email[1])
goto error;
if (flag == ADD_JUNK_ENTRY)
@@ -617,6 +618,7 @@ groupwise_sync (CamelFolder *folder, gbo
if ((flags & CAMEL_MESSAGE_JUNK) && !(flags & CAMEL_GW_MESSAGE_JUNK)) /*marked a message junk*/
move_to_junk (folder, info, ex);
+
else if ((flags & CAMEL_MESSAGE_JUNK) && (flags & CAMEL_GW_MESSAGE_JUNK)) /*message was marked as junk, now unjunk*/
move_to_mailbox (folder, info, ex);
@@ -1171,12 +1173,17 @@ gw_update_cache (CamelFolder *folder, GL
org = e_gw_item_get_organizer (item);
if (org) {
- if (exists)
- camel_pstring_free(mi->info.from);
- if (org->display_name && org->display_name[0])
- mi->info.from = camel_pstring_strdup (org->display_name);
- else if (org->email && org->email[0])
- mi->info.from = camel_pstring_strdup (org->email);
+ GString *str;
+ str = g_string_new ("");
+ if (org->display_name && org->display_name[0])
+ str = g_string_append (str, org->display_name);
+ if (org->email && org->email[0]) {
+ g_string_append (str, "<");
+ str = g_string_append (str, org->email);
+ g_string_append (str, ">");
+ }
+ mi->info.from = camel_pstring_strdup (str->str);
+ g_string_free (str, TRUE);
}
g_string_truncate (str, 0);
recp_list = e_gw_item_get_recipient_list (item);
@@ -1369,10 +1376,17 @@ gw_update_summary ( CamelFolder *folder,
org = e_gw_item_get_organizer (item);
if (org) {
- if (org->display_name && org->display_name[0])
- mi->info.from = camel_pstring_strdup (org->display_name);
- else if (org->email && org->email[0])
- mi->info.from = camel_pstring_strdup (org->email);
+ GString *str;
+ str = g_string_new ("");
+ if (org->display_name && org->display_name[0])
+ str = g_string_append (str, org->display_name);
+ if (org->email && org->email[0]) {
+ g_string_append (str, "<");
+ str = g_string_append (str, org->email);
+ g_string_append (str, ">");
+ }
+ mi->info.from = camel_pstring_strdup (str->str);
+ g_string_free (str, TRUE);
}
g_string_truncate (str, 0);
recp_list = e_gw_item_get_recipient_list (item);

View File

@ -1,82 +0,0 @@
Index: addressbook/backends/groupwise/e-book-backend-groupwise.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c,v
retrieving revision 1.73
diff -u -p -r1.73 e-book-backend-groupwise.c
--- addressbook/backends/groupwise/e-book-backend-groupwise.c 23 Mar 2006 10:55:47 -0000 1.73
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 3 Apr 2006 13:18:36 -0000
@@ -70,11 +70,11 @@ struct _EBookBackendGroupwisePrivate {
int cache_timeout;
EBookBackendCache *cache;
EBookBackendSummary *summary;
+ GMutex *update_mutex;
/* for future use */
void *reserved1;
void *reserved2;
void *reserved3;
- void *reserved4;
};
#define ELEMENT_TYPE_SIMPLE 0x01
@@ -2711,6 +2711,8 @@ update_address_book_deltas (EBookBackend
EBookBackendGroupwisePrivate *priv = ebgw->priv;
EBookBackendCache *cache = priv->cache;
+
+ g_mutex_lock (priv->update_mutex);
if (enable_debug)
printf("\nupdating GroupWise system address book cache \n");
@@ -2724,6 +2726,7 @@ update_address_book_deltas (EBookBackend
if (status != E_GW_CONNECTION_STATUS_OK) {
if (enable_debug)
printf("No connection with the server \n");
+ g_mutex_unlock(priv->update_mutex);
return FALSE;
}
@@ -2733,6 +2736,7 @@ update_address_book_deltas (EBookBackend
if (enable_debug)
printf ("sequence is reset, rebuilding cache...\n");
build_cache (ebgw);
+ g_mutex_unlock(priv->update_mutex);
return TRUE;
}
@@ -2754,6 +2758,7 @@ update_address_book_deltas (EBookBackend
build_cache (ebgw);
add_sequence_to_cache (cache, server_first_sequence,
server_last_sequence, server_last_po_rebuild_time);
+ g_mutex_unlock(priv->update_mutex);
return TRUE;
}
@@ -2926,6 +2931,7 @@ update_address_book_deltas (EBookBackend
printf("updating GroupWise system address book cache took %ld.%03ld seconds for %d changes\n",
diff / 1000, diff % 1000, contact_num);
}
+ g_mutex_unlock(priv->update_mutex);
return TRUE;
}
@@ -3427,6 +3433,8 @@ e_book_backend_groupwise_dispose (GObjec
g_source_remove (bgw->priv->cache_timeout);
bgw->priv->cache_timeout = 0;
}
+ if (bgw->priv->update_mutex)
+ g_mutex_free(bgw->priv->update_mutex);
g_free (bgw->priv);
bgw->priv = NULL;
@@ -3485,10 +3493,10 @@ e_book_backend_groupwise_init (EBookBack
priv->cnc = NULL;
priv->original_uri = NULL;
priv->cache_timeout = 0;
+ priv->update_mutex = g_mutex_new();
priv->reserved1 = NULL;
priv->reserved2 = NULL;
priv->reserved3 = NULL;
- priv->reserved4 = NULL;
backend->priv = priv;
if (g_getenv ("GROUPWISE_DEBUG")) {

View File

@ -1,41 +0,0 @@
Index: calendar/backends/groupwise/e-cal-backend-groupwise.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v
retrieving revision 1.174
diff -u -p -r1.174 e-cal-backend-groupwise.c
--- calendar/backends/groupwise/e-cal-backend-groupwise.c 3 Apr 2006 08:36:44 -0000 1.174
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c 5 Apr 2006 06:17:11 -0000
@@ -1839,7 +1839,7 @@ e_cal_backend_groupwise_modify_object (E
ECalComponent *comp, *cache_comp = NULL;
EGwConnectionStatus status;
EGwItem *item, *cache_item;
- const char *uid = NULL;
+ const char *uid = NULL, *rid = NULL;
*old_object = NULL;
cbgw = E_CAL_BACKEND_GROUPWISE (backend);
@@ -1861,13 +1861,14 @@ e_cal_backend_groupwise_modify_object (E
comp = e_cal_component_new ();
e_cal_component_set_icalcomponent (comp, icalcomp);
e_cal_component_get_uid (comp, &uid);
+ rid = e_cal_component_get_recurid_as_string (comp);
/* check if the object exists */
switch (priv->mode) {
case CAL_MODE_ANY :
case CAL_MODE_REMOTE :
/* when online, send the item to the server */
- cache_comp = e_cal_backend_cache_get_component (priv->cache, uid, NULL);
+ cache_comp = e_cal_backend_cache_get_component (priv->cache, uid, rid);
if (!cache_comp) {
g_message ("CRITICAL : Could not find the object in cache");
return GNOME_Evolution_Calendar_ObjectNotFound;
@@ -2070,7 +2071,7 @@ e_cal_backend_groupwise_remove_object (E
e_cal_backend_cache_remove_component (priv->cache, id->uid,
id->rid);
- if (!g_str_equal (id->rid, rid))
+ if (!id->rid || !g_str_equal (id->rid, rid))
e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id, e_cal_component_get_as_string (comp), NULL);
e_cal_component_free_id (id);

View File

@ -1,70 +0,0 @@
--- addressbook/libebook/e-vcard.c.orig 2006-04-04 20:53:02.000000000 -0500
+++ addressbook/libebook/e-vcard.c 2006-04-04 20:56:55.000000000 -0500
@@ -541,6 +541,45 @@ read_attribute (char **p)
return NULL;
}
+/* Stolen from glib/glib/gconvert.c */
+static gchar *
+make_valid_utf8 (const gchar *name)
+{
+ GString *string;
+ const gchar *remainder, *invalid;
+ gint remaining_bytes, valid_bytes;
+
+ string = NULL;
+ remainder = name;
+ remaining_bytes = strlen (name);
+
+ while (remaining_bytes != 0)
+ {
+ if (g_utf8_validate (remainder, remaining_bytes, &invalid))
+ break;
+ valid_bytes = invalid - remainder;
+
+ if (string == NULL)
+ string = g_string_sized_new (remaining_bytes);
+
+ g_string_append_len (string, remainder, valid_bytes);
+ /* append U+FFFD REPLACEMENT CHARACTER */
+ g_string_append (string, "\357\277\275");
+
+ remaining_bytes -= valid_bytes + 1;
+ remainder = invalid + 1;
+ }
+
+ if (string == NULL)
+ return g_strdup (name);
+
+ g_string_append (string, remainder);
+
+ g_assert (g_utf8_validate (string->str, -1, NULL));
+
+ return g_string_free (string, FALSE);
+}
+
/* we try to be as forgiving as we possibly can here - this isn't a
* validator. Almost nothing is considered a fatal error. We always
* try to return *something*.
@@ -548,17 +587,12 @@ read_attribute (char **p)
static void
parse (EVCard *evc, const char *str)
{
- char *buf = g_strdup (str);
- char *p, *end;
+ char *buf;
+ char *p;
EVCardAttribute *attr;
- /* first validate the string is valid utf8 */
- if (!g_utf8_validate (buf, -1, (const char **)&end)) {
- /* if the string isn't valid, we parse as much as we can from it */
- g_warning ("invalid utf8 passed to EVCard. Limping along.");
- *end = '\0';
- }
-
+ buf = make_valid_utf8 (str);
+
buf = fold_lines (buf);
d(printf ("BEFORE FOLDING:\n"));

View File

@ -1,16 +1,15 @@
Index: calendar/backends/file/e-cal-backend-file.c
===================================================================
--- calendar/backends/file/e-cal-backend-file.c.orig
+++ calendar/backends/file/e-cal-backend-file.c
@@ -134,6 +134,7 @@ save_file_when_idle (gpointer user_data)
=== modified file 'calendar/backends/file/e-cal-backend-file.c'
--- calendar/backends/file/e-cal-backend-file.c 2007-12-18 16:36:30 +0000
+++ calendar/backends/file/e-cal-backend-file.c 2007-12-18 16:42:10 +0000
@@ -128,6 +128,7 @@
GnomeVFSFileSize out;
gchar *tmp, *backup_uristr;
char *buf;
+ char *error = NULL;
ECalBackendFile *cbfile = user_data;
priv = cbfile->priv;
@@ -206,12 +207,15 @@ save_file_when_idle (gpointer user_data)
@@ -200,12 +201,15 @@
g_static_rec_mutex_unlock (&priv->idle_save_rmutex);
e_cal_backend_notify_error (E_CAL_BACKEND (cbfile),
_("Cannot save calendar data: Malformed URI."));
@ -29,7 +28,7 @@ Index: calendar/backends/file/e-cal-backend-file.c
}
static void
@@ -526,8 +530,6 @@ add_component (ECalBackendFile *cbfile,
@@ -520,8 +524,6 @@
g_assert (icalcomp != NULL);
icalcomponent_add_component (priv->icalcomp, icalcomp);
@ -38,3 +37,4 @@ Index: calendar/backends/file/e-cal-backend-file.c
}
}

View File

@ -1,14 +1,14 @@
Index: addressbook/backends/file/e-book-backend-file.c
===================================================================
--- addressbook/backends/file/e-book-backend-file.c.orig
+++ addressbook/backends/file/e-book-backend-file.c
@@ -684,6 +684,9 @@ e_book_backend_file_stop_book_view (EBoo
=== modified file 'addressbook/backends/file/e-book-backend-file.c'
--- addressbook/backends/file/e-book-backend-file.c 2007-12-18 16:36:30 +0000
+++ addressbook/backends/file/e-book-backend-file.c 2007-12-18 16:42:54 +0000
@@ -666,6 +666,9 @@
FileBackendSearchClosure *closure = get_closure (book_view);
gboolean need_join = FALSE;
gboolean need_join;
+ if (!closure)
+ return;
+
d(printf ("stopping query\n"));
g_mutex_lock (closure->mutex);
if (!closure->stopped)
need_join = e_flag_is_set (closure->running);
e_flag_clear (closure->running);

View File

@ -1,31 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.129
diff -u -p -r1.129 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 17 Apr 2006 10:26:16 -0000 1.129
+++ camel/providers/groupwise/camel-groupwise-folder.c 18 Apr 2006 15:14:40 -0000
@@ -586,11 +586,7 @@ groupwise_sync (CamelFolder *folder, gbo
EGwConnectionStatus status;
EGwConnection *cnc;
int count, i;
-
- /* Sync-up the (un)read changes before getting updates,
- so that the getFolderList will reflect the most recent changes too */
- groupwise_sync (folder, FALSE, ex);
-
+
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
groupwise_sync_summary (folder, ex);
@@ -896,6 +892,10 @@ groupwise_refresh_folder(CamelFolder *fo
char *time_string = NULL, *t_str = NULL;
struct _folder_update_msg *msg;
gboolean check_all = FALSE;
+
+ /* Sync-up the (un)read changes before getting updates,
+ so that the getFolderList will reflect the most recent changes too */
+ groupwise_sync (folder, FALSE, ex);
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
g_warning ("In offline mode. Cannot refresh!!!\n");

View File

@ -1,19 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -r1.128 -r1.129
--- camel/providers/groupwise/camel-groupwise-folder.c 2006/04/06 09:43:14 1.128
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006/04/17 10:26:16 1.129
@@ -587,6 +587,10 @@
EGwConnection *cnc;
int count, i;
+ /* Sync-up the (un)read changes before getting updates,
+ so that the getFolderList will reflect the most recent changes too */
+ groupwise_sync (folder, FALSE, ex);
+
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
groupwise_sync_summary (folder, ex);

View File

@ -1,19 +1,16 @@
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c,v
retrieving revision 1.73
diff -u -p -r1.73 e-cal-backend-groupwise-utils.c
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 9 Dec 2005 11:21:49 -0000 1.73
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 11 Apr 2006 09:12:09 -0000
@@ -300,9 +300,10 @@ e_cal_backend_groupwise_set_attachments_
=== modified file 'calendar/backends/groupwise/e-cal-backend-groupwise-utils.c'
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 2007-12-18 16:36:30 +0000
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 2007-12-18 16:41:31 +0000
@@ -300,9 +300,10 @@
/* FIXME the member does not follow the naming convention.
* Should be fixed in e-gw-item*/
attach_item->contentType = g_strdup (gnome_vfs_get_mime_type (attach_filename_full));
- g_free (attach_filename_full);
attach_item->name = g_strdup (filename + strlen(uid) + 1);
+ g_free (attach_filename_full);
+
+ attach_item->name = g_strdup (filename + strlen(uid) + 1);
g_free (attach_filename_full);
- attach_item->name = g_strdup (filename + strlen(uid) + 1);
/* do a base64 encoding so it can be embedded in a soap
* message */
encoded_data = soup_base64_encode (file_contents, file_len);
encoded_data = g_base64_encode (file_contents, file_len);

View File

@ -1,107 +0,0 @@
--- addressbook/backends/groupwise/e-book-backend-groupwise.c.orig 2006-04-16 20:19:03.086611569 +0200
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 2006-04-16 20:24:43.271873993 +0200
@@ -2814,8 +2814,41 @@ update_address_book_deltas (EBookBackend
printf("sequence differs but no changes found !!!\n");
break;
}
- printf("add_list size:%d\n", g_list_length(add_list));
- printf("delete_list size:%d\n", g_list_length(delete_list));
+ if (enable_debug) {
+ printf("add_list size:%d\n", g_list_length(add_list));
+ printf("delete_list size:%d\n", g_list_length(delete_list));
+ }
+
+ for (; delete_list != NULL; delete_list = g_list_next(delete_list)) {
+ const char *id;
+
+ /* deleted from the server */
+ contact = e_contact_new ();
+ fill_contact_from_gw_item (contact,
+ E_GW_ITEM (delete_list->data),
+ ebgw->priv->categories_by_id);
+ if (enable_debug)
+ printf("contact email:%s, contact name:%s\n", (char *) e_contact_get(contact, E_CONTACT_EMAIL_1), (char *) e_contact_get(contact, E_CONTACT_GIVEN_NAME));
+ e_contact_set (contact,
+ E_CONTACT_BOOK_URI,
+ priv->original_uri);
+ id = e_contact_get_const (contact, E_CONTACT_UID);
+
+ if (e_book_backend_cache_check_contact (ebgw->priv->cache, id)) {
+ contact_num++;
+
+ if (book_view) {
+ status_msg = g_strdup_printf (_("Updating contacts cache (%d)... "),
+ contact_num);
+ book_view_notify_status (book_view, status_msg);
+ g_free (status_msg);
+ }
+ e_book_backend_cache_remove_contact (ebgw->priv->cache, id);
+ e_book_backend_summary_remove_contact (ebgw->priv->summary, id);
+ }
+ g_object_unref(contact);
+ g_object_unref (delete_list->data);
+ }
for (; add_list != NULL; add_list = g_list_next(add_list)) {
const char *id;
@@ -2851,34 +2884,6 @@ update_address_book_deltas (EBookBackend
g_object_unref (add_list->data);
}
- for (; delete_list != NULL; delete_list = g_list_next(delete_list)) {
- const char *id;
-
- /* deleted from the server */
- contact = e_contact_new ();
- fill_contact_from_gw_item (contact,
- E_GW_ITEM (delete_list->data),
- ebgw->priv->categories_by_id);
- e_contact_set (contact,
- E_CONTACT_BOOK_URI,
- priv->original_uri);
- id = e_contact_get_const (contact, E_CONTACT_UID);
-
- if (e_book_backend_cache_check_contact (ebgw->priv->cache, id)) {
- contact_num++;
-
- if (book_view) {
- status_msg = g_strdup_printf (_("Updating contacts cache (%d)... "),
- contact_num);
- book_view_notify_status (book_view, status_msg);
- g_free (status_msg);
- }
- e_book_backend_cache_remove_contact (ebgw->priv->cache, id);
- e_book_backend_summary_remove_contact (ebgw->priv->summary, id);
- }
- g_object_unref(contact);
- g_object_unref (delete_list->data);
- }
cache_last_sequence += contact_num;
}
--- servers/groupwise/e-gw-connection.c.orig 2006-04-16 20:19:30.383515263 +0200
+++ servers/groupwise/e-gw-connection.c 2006-04-16 20:19:40.699856797 +0200
@@ -764,7 +764,7 @@ e_gw_connection_get_items_delta (EGwConn
SoupSoapMessage *msg;
SoupSoapResponse *response;
EGwConnectionStatus status;
- SoupSoapParameter *param, *subparam;
+ SoupSoapParameter *param, *subparam, *subsubparam;
g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_OBJECT);
@@ -819,11 +819,11 @@ e_gw_connection_get_items_delta (EGwConn
item = e_gw_item_new_from_soap_parameter (cnc->priv->user_email, container, subparam);
- subparam = soup_soap_parameter_get_first_child_by_name(subparam, "sync");
- if (subparam) {
+ subsubparam = soup_soap_parameter_get_first_child_by_name(subparam, "sync");
+ if (subsubparam) {
char *value;
- value = soup_soap_parameter_get_string_value (subparam);
+ value = soup_soap_parameter_get_string_value (subsubparam);
if (!strcmp (value, "add") || !strcmp (value, "update")) {
*add_list = g_list_append (*add_list, item);
} else if (!strcmp (value, "delete")) {

View File

@ -1,33 +0,0 @@
Index: calendar/backends/groupwise/e-cal-backend-groupwise.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v
retrieving revision 1.173.2.1
diff -u -p -r1.173.2.1 e-cal-backend-groupwise.c
--- calendar/backends/groupwise/e-cal-backend-groupwise.c 6 Apr 2006 08:18:28 -0000 1.173.2.1
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c 21 Apr 2006 06:23:23 -0000
@@ -1814,12 +1814,11 @@ e_cal_backend_groupwise_modify_object (E
in_offline (cbgw);
return GNOME_Evolution_Calendar_RepositoryOffline;
}
-
+
/* check the component for validity */
icalcomp = icalparser_parse_string (calobj);
if (!icalcomp)
return GNOME_Evolution_Calendar_InvalidObject;
-
comp = e_cal_component_new ();
e_cal_component_set_icalcomponent (comp, icalcomp);
e_cal_component_get_uid (comp, &uid);
@@ -1844,9 +1843,8 @@ e_cal_backend_groupwise_modify_object (E
if (mod == CALOBJ_MOD_ALL && e_cal_component_is_instance (comp)) {
recur_key = uid;
- } else {
- id = e_gw_item_get_id (item);
- }
+ }
+ id = e_gw_item_get_id (item);
status = e_gw_connection_delegate_request (priv->cnc, item, id, NULL, NULL, recur_key);

View File

@ -1,128 +0,0 @@
Index: calendar/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
retrieving revision 1.568.2.16
diff -u -p -r1.568.2.16 ChangeLog
--- calendar/ChangeLog 14 Jun 2006 11:02:55 -0000 1.568.2.16
+++ calendar/ChangeLog 17 Jul 2006 06:05:27 -0000
@@ -1,3 +1,12 @@
+2006-07-17 Harish Krishnaswamy <kharish@novell.com>
+
+ * backends/groupwise/e-cal-backend-groupwise-utils.c:
+ (set_default_alarms), (e_gw_item_to_cal_component):
+ * backends/groupwise/e-cal-backend-groupwise-utils.h:
+ Apply default alarm client preference to GW events if
+ the event does not already have one. Fixes Bug
+ #167330 on bugzilla.novell.com.
+
2006-06-14 Wang Xin <jedy.wang@sun.com>
Fixes #344253
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c,v
retrieving revision 1.73
diff -u -p -r1.73 e-cal-backend-groupwise-utils.c
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 9 Dec 2005 11:21:49 -0000 1.73
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 17 Jul 2006 06:05:27 -0000
@@ -803,6 +803,67 @@ set_attachments_to_cal_component (EGwIte
}
+static void
+set_default_alarms (ECalComponent *comp)
+{
+
+ GConfClient *gconf = gconf_client_get_default ();
+
+ if (gconf_client_get_bool (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER, NULL)) {
+
+ ECalComponentAlarm *acomp;
+ int interval;
+ char * units;
+ enum {
+ DAYS,
+ HOURS,
+ MINUTES
+ } duration;
+ ECalComponentAlarmTrigger trigger;
+
+ interval = gconf_client_get_int (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER_INTERVAL, NULL);
+ units = gconf_client_get_string (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER_UNITS, NULL);
+ g_object_unref (gconf);
+
+ if (units && !strcmp (units, "days"))
+ duration = DAYS;
+ else if (units && !strcmp (units, "hours"))
+ duration = HOURS;
+ else
+ duration = MINUTES;
+ g_free (units);
+ acomp = e_cal_component_alarm_new ();
+
+ e_cal_component_alarm_set_action (acomp, E_CAL_COMPONENT_ALARM_DISPLAY);
+
+ trigger.type = E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START;
+ memset (&trigger.u.rel_duration, 0, sizeof (trigger.u.rel_duration));
+
+ trigger.u.rel_duration.is_neg = TRUE;
+
+ switch (duration) {
+ case MINUTES:
+ trigger.u.rel_duration.minutes = interval;
+ break;
+ case HOURS:
+ trigger.u.rel_duration.hours = interval;
+ break;
+ case DAYS:
+ trigger.u.rel_duration.days = interval;
+ break;
+ default:
+ e_cal_component_alarm_free (acomp);
+ return;
+ }
+
+ e_cal_component_alarm_set_trigger (acomp, trigger);
+ e_cal_component_add_alarm (comp, acomp);
+
+ e_cal_component_alarm_free (acomp);
+ }
+}
+
+
ECalComponent *
e_gw_item_to_cal_component (EGwItem *item, ECalBackendGroupwise *cbgw)
{
@@ -1111,9 +1172,9 @@ e_gw_item_to_cal_component (EGwItem *ite
trigger.u.rel_duration = icaldurationtype_from_int (alarm_duration);
e_cal_component_alarm_set_trigger (alarm, trigger);
e_cal_component_add_alarm (comp, alarm);
- }
-
+ } else
+ set_default_alarms (comp);
break;
case E_GW_ITEM_TYPE_TASK :
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.h,v
retrieving revision 1.18
diff -u -p -r1.18 e-cal-backend-groupwise-utils.h
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.h 11 Oct 2005 07:56:18 -0000 1.18
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.h 17 Jul 2006 06:05:27 -0000
@@ -33,6 +33,13 @@ G_BEGIN_DECLS
#define GW_EVENT_TYPE_ID "@4:"
#define GW_TODO_TYPE_ID "@3:"
+
+/* Default reminder */
+#define CALENDAR_CONFIG_PREFIX "/apps/evolution/calendar"
+#define CALENDAR_CONFIG_DEFAULT_REMINDER CALENDAR_CONFIG_PREFIX "/other/use_default_reminder"
+#define CALENDAR_CONFIG_DEFAULT_REMINDER_INTERVAL CALENDAR_CONFIG_PREFIX "/other/default_reminder_interval"
+#define CALENDAR_CONFIG_DEFAULT_REMINDER_UNITS CALENDAR_CONFIG_PREFIX "/other/default_reminder_units"
+
/*
* Items management
*/

View File

@ -1,8 +1,7 @@
Index: camel/camel.c
===================================================================
--- camel/camel.c.orig
+++ camel/camel.c
@@ -44,6 +44,8 @@
=== modified file 'camel/camel.c'
--- camel/camel.c 2007-12-18 16:36:30 +0000
+++ camel/camel.c 2007-12-18 16:43:25 +0000
@@ -46,6 +46,8 @@
static int initialised = FALSE;
@ -11,50 +10,11 @@ Index: camel/camel.c
static void
camel_shutdown (void)
{
Index: camel/providers/imap/camel-imap-folder.c
===================================================================
--- camel/providers/imap/camel-imap-folder.c.orig
+++ camel/providers/imap/camel-imap-folder.c
@@ -605,6 +605,7 @@ imap_rescan (CamelFolder *folder, int ex
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
+ extern int camel_application_is_exiting;
struct {
char *uid;
guint32 flags;
@@ -618,6 +619,9 @@ imap_rescan (CamelFolder *folder, int ex
gboolean ok;
CamelFolderChangeInfo *changes = NULL;
+ if (camel_application_is_exiting)
+ return;
+
imap_folder->need_rescan = FALSE;
summary_len = camel_folder_summary_count (folder->summary);
@@ -2634,6 +2638,7 @@ camel_imap_folder_changed (CamelFolder *
GArray *expunged, CamelException *ex)
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
+ extern int camel_application_is_exiting;
CamelFolderChangeInfo *changes;
CamelMessageInfo *info;
int len;
@@ -2661,7 +2666,7 @@ camel_imap_folder_changed (CamelFolder *
}
len = camel_folder_summary_count (folder->summary);
- if (exists > len)
+ if (exists > len && !camel_application_is_exiting)
imap_update_summary (folder, exists, changes, ex);
if (camel_folder_change_info_changed (changes))
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
--- camel/providers/groupwise/camel-groupwise-folder.c.orig
+++ camel/providers/groupwise/camel-groupwise-folder.c
@@ -60,7 +60,7 @@
=== modified file 'camel/providers/groupwise/camel-groupwise-folder.c'
--- camel/providers/groupwise/camel-groupwise-folder.c 2007-12-18 16:41:03 +0000
+++ camel/providers/groupwise/camel-groupwise-folder.c 2007-12-18 16:43:25 +0000
@@ -66,7 +66,7 @@
#define ADD_JUNK_ENTRY 1
#define REMOVE_JUNK_ENTRY -1
#define JUNK_FOLDER "Junk Mail"
@ -63,7 +23,7 @@ Index: camel/providers/groupwise/camel-groupwise-folder.c
#define MAX_ATTACHMENT_SIZE 1*1024*1024 /*In bytes*/
#define GROUPWISE_BULK_DELETE_LIMIT 100
@@ -856,6 +856,9 @@ struct _folder_update_msg {
@@ -867,6 +867,9 @@
static void
update_update (CamelSession *session, CamelSessionThreadMsg *msg)
{
@ -73,7 +33,7 @@ Index: camel/providers/groupwise/camel-groupwise-folder.c
struct _folder_update_msg *m = (struct _folder_update_msg *)msg;
EGwConnectionStatus status;
CamelException *ex = NULL;
@@ -874,7 +877,7 @@ update_update (CamelSession *session, Ca
@@ -885,7 +888,7 @@
done = FALSE;
m->slist = NULL;
@ -82,3 +42,43 @@ Index: camel/providers/groupwise/camel-groupwise-folder.c
item_list = NULL;
status = e_gw_connection_get_all_mail_uids (m->cnc, m->container_id, cursor, FALSE, READ_CURSOR_MAX_IDS, position, &item_list);
if (status != E_GW_CONNECTION_STATUS_OK) {
=== modified file 'camel/providers/imap/camel-imap-folder.c'
--- camel/providers/imap/camel-imap-folder.c 2007-12-18 16:36:30 +0000
+++ camel/providers/imap/camel-imap-folder.c 2007-12-18 16:43:25 +0000
@@ -652,6 +652,7 @@
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
+ extern int camel_application_is_exiting;
struct {
char *uid;
guint32 flags;
@@ -665,6 +666,9 @@
gboolean ok;
CamelFolderChangeInfo *changes = NULL;
+ if (camel_application_is_exiting)
+ return;
+
imap_folder->need_rescan = FALSE;
summary_len = camel_folder_summary_count (folder->summary);
@@ -2738,6 +2742,7 @@
GArray *expunged, CamelException *ex)
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
+ extern int camel_application_is_exiting;
CamelFolderChangeInfo *changes;
CamelMessageInfo *info;
int len;
@@ -2765,7 +2770,7 @@
}
len = camel_folder_summary_count (folder->summary);
- if (exists > len)
+ if (exists > len && !camel_application_is_exiting)
imap_update_summary (folder, exists, changes, ex);
if (camel_folder_change_info_changed (changes))

View File

@ -1,31 +0,0 @@
Index: servers/exchange/storage/exchange-account.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-account.c,v
retrieving revision 1.31
diff -u -p -r1.31 exchange-account.c
--- servers/exchange/storage/exchange-account.c 20 Apr 2006 13:04:12 -0000 1.31
+++ servers/exchange/storage/exchange-account.c 2 May 2006 11:22:10 -0000
@@ -1272,7 +1272,7 @@ setup_account_hierarchies (ExchangeAccou
account->priv->identity_name,
account->priv->identity_email,
account->priv->source_uri,
- FALSE);
+ TRUE);
setup_hierarchy (account, hier);
g_free (phys_uri_prefix);
Index: servers/exchange/storage/exchange-hierarchy-favorites.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-hierarchy-favorites.c,v
retrieving revision 1.7
diff -u -p -r1.7 exchange-hierarchy-favorites.c
--- servers/exchange/storage/exchange-hierarchy-favorites.c 6 Feb 2006 08:01:53 -0000 1.7
+++ servers/exchange/storage/exchange-hierarchy-favorites.c 2 May 2006 11:27:16 -0000
@@ -336,6 +336,6 @@ exchange_hierarchy_favorites_new (Exchan
public_uri,
owner_name, owner_email,
source_uri,
- FALSE);
+ TRUE);
return hier;
}

View File

@ -1,29 +0,0 @@
--- addressbook/backends/groupwise/e-book-backend-groupwise.c.orig 2006-05-11 12:21:57.361493158 +0200
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 2006-05-11 12:15:45.055028496 +0200
@@ -2883,7 +2883,6 @@ update_address_book_deltas (EBookBackend
if (cache_last_sequence != server_last_sequence) {
- while (cache_last_sequence < server_last_sequence) {
if (enable_debug) {
printf("cache_last_sequence:%lf, server_last_sequence:%lf\n", cache_last_sequence, server_last_sequence);
printf("Calling get_items_delta\n");
@@ -2897,7 +2896,8 @@ update_address_book_deltas (EBookBackend
if (add_list == NULL && delete_list == NULL) {
if (enable_debug)
printf("sequence differs but no changes found !!!\n");
- break;
+ g_mutex_unlock (priv->update_mutex);
+ return TRUE;
}
sync_required = TRUE;
if (enable_debug) {
@@ -2976,7 +2976,7 @@ update_address_book_deltas (EBookBackend
g_object_unref (add_list->data);
}
cache_last_sequence += contact_num;
- }
+
/* cache is updated, now adding the sequence information to the cache */

View File

@ -1,184 +0,0 @@
--- addressbook/backends/groupwise/e-book-backend-groupwise.c 2006-06-09 15:05:45.000000000 +0530
+++ addressbook/backends/groupwise/e-book-backend-groupwise-new.c 2006-06-09 14:35:19.000000000 +0530
@@ -73,12 +73,12 @@ struct _EBookBackendGroupwisePrivate {
int mode;
int cache_timeout;
EBookBackendSummary *summary;
+ GMutex *update_cache_mutex;
GMutex *update_mutex;
DB *file_db;
DB_ENV *env;
/* for future use */
void *reserved1;
- void *reserved2;
};
static GStaticMutex global_env_lock = G_STATIC_MUTEX_INIT;
@@ -1170,6 +1170,7 @@ e_book_backend_groupwise_create_contact
e_contact_set (contact, E_CONTACT_UID, id);
g_free (id);
e_book_backend_db_cache_add_contact (egwb->priv->file_db, contact);
+ egwb->priv->file_db->sync(egwb->priv->file_db, 0);
e_book_backend_summary_add_contact (egwb->priv->summary, contact);
e_data_book_respond_create(book, opid, GNOME_Evolution_Addressbook_Success, contact);
@@ -1223,6 +1224,7 @@ e_book_backend_groupwise_remove_contacts
e_book_backend_db_cache_remove_contact (ebgw->priv->file_db, id);
e_book_backend_summary_remove_contact (ebgw->priv->summary, id);
}
+ ebgw->priv->file_db->sync(ebgw->priv->file_db, 0);
e_data_book_respond_remove_contacts (book, opid,
GNOME_Evolution_Addressbook_Success, deleted_ids);
return;
@@ -1358,6 +1360,7 @@ e_book_backend_groupwise_modify_contact
e_book_backend_db_cache_remove_contact (egwb->priv->file_db, id);
e_book_backend_summary_remove_contact (egwb->priv->summary, id);
e_book_backend_db_cache_add_contact (egwb->priv->file_db, contact);
+ egwb->priv->file_db->sync(egwb->priv->file_db, 0);
e_book_backend_summary_add_contact (egwb->priv->summary, contact);
}
else
@@ -2691,6 +2694,8 @@ update_cache (EBookBackendGroupwise *ebg
if (!ebgw)
return FALSE;
+ g_mutex_lock (ebgw->priv->update_cache_mutex);
+
if (enable_debug) {
g_get_current_time(&start);
printf("updating cache for %s\n", ebgw->priv->book_name);
@@ -2729,6 +2734,7 @@ update_cache (EBookBackendGroupwise *ebg
bonobo_object_unref (book_view);
if (enable_debug)
printf("No connection with the server \n");
+ g_mutex_unlock (ebgw->priv->update_cache_mutex);
return FALSE;
}
@@ -2738,6 +2744,7 @@ update_cache (EBookBackendGroupwise *ebg
contact = e_contact_new ();
fill_contact_from_gw_item (contact, E_GW_ITEM (gw_items->data),
ebgw->priv->categories_by_id);
+
e_contact_set (contact, E_CONTACT_BOOK_URI, ebgw->priv->original_uri);
id = e_contact_get_const (contact, E_CONTACT_UID);
@@ -2782,6 +2789,7 @@ update_cache (EBookBackendGroupwise *ebg
printf("updating the cache for %s complated in %ld.%03ld seconds for %d contacts\n",
ebgw->priv->book_name, diff / 1000, diff % 1000, contact_num);
}
+ g_mutex_unlock (ebgw->priv->update_cache_mutex);
return FALSE;
}
@@ -2797,6 +2805,7 @@ update_address_book_deltas (EBookBackend
EContact *contact;
EDataBookView *book_view;
GroupwiseBackendSearchClosure *closure;
+ EGwItem *item;
if (!ebgw)
return FALSE;
@@ -2827,6 +2836,9 @@ update_address_book_deltas (EBookBackend
if (enable_debug)
printf ("sequence is reset, rebuilding cache...\n");
build_cache (ebgw);
+ add_sequence_to_cache (priv->file_db, server_first_sequence,
+ server_last_sequence, server_last_po_rebuild_time);
+ ebgw->priv->file_db->sync (ebgw->priv->file_db, 0);
g_mutex_unlock (priv->update_mutex);
return TRUE;
}
@@ -2844,6 +2856,7 @@ update_address_book_deltas (EBookBackend
add_sequence_to_cache (priv->file_db, server_first_sequence,
server_last_sequence, server_last_po_rebuild_time);
ebgw->priv->file_db->sync (ebgw->priv->file_db, 0);
+ g_mutex_unlock (priv->update_mutex);
return TRUE;
}
@@ -2896,6 +2909,8 @@ update_address_book_deltas (EBookBackend
if (add_list == NULL && delete_list == NULL) {
if (enable_debug)
printf("sequence differs but no changes found !!!\n");
+ add_sequence_to_cache (priv->file_db, server_first_sequence,
+ server_last_sequence, server_last_po_rebuild_time);
g_mutex_unlock (priv->update_mutex);
return TRUE;
}
@@ -2945,6 +2960,20 @@ update_address_book_deltas (EBookBackend
E_GW_ITEM (add_list->data),
ebgw->priv->categories_by_id);
+ /* When a distribution list is modified the server sends me a delete and add response.
+ But it doesnt send me the members, so i have to explicitly request the server for the members of the distribution list */
+
+ if (e_contact_get (contact, E_CONTACT_IS_LIST)) {
+ if(enable_debug)
+ printf ("Contact List modified fetching the members of the contact list\n");
+
+ status = e_gw_connection_get_item (ebgw->priv->cnc, ebgw->priv->container_id, e_contact_get (contact, E_CONTACT_UID), "name email default members", &item);
+ g_object_unref (contact);
+ contact = e_contact_new ();
+ fill_contact_from_gw_item (contact, item, ebgw->priv->categories_by_id);
+ g_object_unref (item);
+ }
+
if (enable_debug)
printf("contact email:%s, contact name:%s\n", (char *)e_contact_get(contact, E_CONTACT_EMAIL_1),(char *) e_contact_get(contact, E_CONTACT_GIVEN_NAME));
e_contact_set (contact,
@@ -2977,7 +3006,6 @@ update_address_book_deltas (EBookBackend
}
cache_last_sequence += contact_num;
-
/* cache is updated, now adding the sequence information to the cache */
add_sequence_to_cache (priv->file_db, server_first_sequence,
@@ -3054,11 +3082,15 @@ e_book_backend_groupwise_authenticate_us
const char *cache_refresh_interval_set;
int cache_refresh_interval = CACHE_REFRESH_INTERVAL;
- if (enable_debug)
- printf ("authenticate user ............\n");
ebgw = E_BOOK_BACKEND_GROUPWISE (backend);
priv = ebgw->priv;
+ if (enable_debug) {
+ printf ("authenticate user ............\n");
+ if(priv->book_name)
+ printf("book_name:%s\n", priv->book_name);
+ }
+
switch (ebgw->priv->mode) {
case GNOME_Evolution_Addressbook_MODE_LOCAL:
@@ -3094,9 +3126,6 @@ e_book_backend_groupwise_authenticate_us
id = NULL;
is_writable = FALSE;
- if (enable_debug)
- if(priv->book_name)
- printf("book_name:%s\n", priv->book_name);
status = e_gw_connection_get_address_book_id (priv->cnc, priv->book_name, &id, &is_writable);
if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
status = e_gw_connection_get_address_book_id (priv->cnc, priv->book_name, &id, &is_writable);
@@ -3632,6 +3661,8 @@ e_book_backend_groupwise_dispose (GObjec
}
if (bgw->priv->update_mutex)
g_mutex_free (bgw->priv->update_mutex);
+ if (bgw->priv->update_cache_mutex)
+ g_mutex_free (bgw->priv->update_cache_mutex);
g_free (bgw->priv);
bgw->priv = NULL;
@@ -3690,8 +3721,8 @@ e_book_backend_groupwise_init (EBookBack
priv->original_uri = NULL;
priv->cache_timeout = 0;
priv->update_mutex = g_mutex_new();
+ priv->update_cache_mutex = g_mutex_new ();
priv->reserved1 = NULL;
- priv->reserved2 = NULL;
backend->priv = priv;
if (g_getenv ("GROUPWISE_DEBUG")) {

View File

@ -1,437 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.114.2.11
diff -u -r1.114.2.11 camel/providers/groupwise/camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 24 Apr 2006 09:59:12 -0000 1.114.2.11
+++ camel/providers/groupwise/camel-groupwise-folder.c 15 May 2006 18:01:10 -0000
@@ -1777,7 +1777,6 @@
CamelGroupwiseStore *gw_store= CAMEL_GROUPWISE_STORE(folder->parent_store);
CamelGroupwiseStorePrivate *priv = gw_store->priv;
CamelOfflineStore *offline = (CamelOfflineStore *) folder->parent_store;
- CamelAddress *recipients;
EGwConnectionStatus status;
EGwConnection *cnc;
EGwItem *item;
@@ -1804,14 +1803,8 @@
CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
/*Get the container id*/
container_id = camel_groupwise_store_container_id_lookup (gw_store, folder->full_name) ;
-
- /* FIXME Separate To/CC/BCC? */
- recipients = CAMEL_ADDRESS (camel_internet_address_new ());
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO)));
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC)));
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_BCC)));
-
- item = camel_groupwise_util_item_from_message (cnc, message, CAMEL_ADDRESS (message->from), recipients);
+
+ item = camel_groupwise_util_item_from_message (cnc, message, CAMEL_ADDRESS (message->from));
/*Set the source*/
if (!strcmp (folder->name, RECEIVED))
e_gw_item_set_source (item, "received");
Index: camel/providers/groupwise/camel-groupwise-transport.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-transport.c,v
retrieving revision 1.27
diff -u -r1.27 camel/providers/groupwise/camel-groupwise-transport.c
--- camel/providers/groupwise/camel-groupwise-transport.c 23 Jan 2006 10:37:24 -0000 1.27
+++ camel/providers/groupwise/camel-groupwise-transport.c 15 May 2006 18:01:10 -0000
@@ -180,7 +180,7 @@
}
- item = camel_groupwise_util_item_from_message (cnc, message, from, recipients);
+ item = camel_groupwise_util_item_from_message (cnc, message, from);
reply_request = (char *)camel_medium_get_header (CAMEL_MEDIUM (message), "In-Reply-To");
if (reply_request) {
Index: camel/providers/groupwise/camel-groupwise-utils.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-utils.c,v
retrieving revision 1.29.2.1
diff -u -r1.29.2.1 camel/providers/groupwise/camel-groupwise-utils.c
--- camel/providers/groupwise/camel-groupwise-utils.c 21 Mar 2006 10:41:51 -0000 1.29.2.1
+++ camel/providers/groupwise/camel-groupwise-utils.c 15 May 2006 18:01:10 -0000
@@ -35,6 +35,8 @@
#include "camel/camel-multipart.h"
#include "camel/camel-service.h"
#include "camel/camel-stream-mem.h"
+#include "camel/camel-stream-filter.h"
+#include "camel/camel-mime-filter-charset.h"
#include "camel-groupwise-utils.h"
@@ -261,7 +263,7 @@
return 0;
}
-GSList *
+static GSList *
add_recipients(GSList *recipient_list, CamelAddress *recipients, int recipient_type)
{
int total_add,i;
@@ -278,42 +280,31 @@
recipient->display_name = g_strdup (name);
recipient->type = recipient_type;
recipient->status = E_GW_ITEM_STAT_NONE;
- recipient_list= g_slist_append (recipient_list, recipient);
+ recipient_list = g_slist_prepend (recipient_list, recipient);
}
}
return recipient_list;
}
static void
-send_as_attachment (EGwConnection *cnc, EGwItem *item, CamelStreamMem *content, char *buffer, CamelContentType *type, CamelDataWrapper *dw, const char *filename, const char *encoding, const char *cid, GSList **attach_list)
+send_as_attachment (EGwConnection *cnc, EGwItem *item, CamelStreamMem *content, CamelContentType *type, CamelDataWrapper *dw, const char *filename, const char *cid, GSList **attach_list)
{
EGwItemLinkInfo *info = NULL;
EGwConnectionStatus status;
EGwItemAttachment *attachment;
EGwItem *temp_item;
-
- int len;
- len = content->buffer->len;
-
+
attachment = g_new0 (EGwItemAttachment, 1);
- attachment->contentType = g_strdup_printf ("%s/%s", type->type, type->subtype);
-
- if (cid) {
- gchar **t;
- //strip_lt_gt ((char **)&cid, 2, 3);
- t = g_strsplit_set (cid,"<>",-1);
- if (!t[1])
- attachment->contentid = g_strdup (cid);
- else
- attachment->contentid = g_strdup (t[1]);
- g_strfreev (t);
- }
-
+ attachment->contentType = camel_content_type_simple (type);
+
+ if (cid)
+ attachment->contentid = camel_header_contentid_decode (cid);
+
if (filename) {
- if (!strcmp (attachment->contentType, "application/pgp-signature")) {
+ if (camel_content_type_is (type, "application", "pgp-signature")) {
char *temp_str;
int temp_len;
- temp_str = soup_base64_encode (buffer, len);
+ temp_str = soup_base64_encode (content->buffer->data, content->buffer->len);
temp_len = strlen (temp_str);
attachment->data = g_strdup (temp_str);
attachment->size = temp_len;
@@ -321,23 +312,16 @@
temp_str = NULL;
temp_len = 0;
} else {
- if (strlen(encoding) > 0) {
- attachment->data = g_malloc0 (content->buffer->len+1);
- attachment->data = memcpy (attachment->data,
- content->buffer->data,
- content->buffer->len);
- attachment->size = content->buffer->len;
- } else {
- attachment->data = soup_base64_encode(content->buffer->data, content->buffer->len);
- attachment->size = strlen (attachment->data);
- }
+ attachment->data = soup_base64_encode(content->buffer->data, content->buffer->len);
+ attachment->size = strlen (attachment->data);
}
} else {
char *temp_str;
int temp_len;
if (!strcmp (attachment->contentType, "multipart/digest")) {
+ /* FIXME? */
} else {
- temp_str = soup_base64_encode (buffer, len);
+ temp_str = soup_base64_encode (content->buffer->data, content->buffer->len);
temp_len = strlen (temp_str);
attachment->data = g_strdup (temp_str);
attachment->size = temp_len;
@@ -347,28 +331,30 @@
}
}
- if (!strcmp (attachment->contentType, "text/html") || !(strcmp (attachment->contentType, "multipart/alternative"))) {
+ if (camel_content_type_is (type, "text", "html") || camel_content_type_is (type, "multipart", "alternative")) {
if (!filename)
filename = "text.htm";
- if (!(strcmp (attachment->contentType, "multipart/alternative"))) {
+ if (camel_content_type_is (type, "multipart", "alternative")) {
+ /* FIXME: this just feels so wrong... */
g_free (attachment->contentType);
attachment->contentType = g_strdup ("text/html");
}
}
attachment->name = g_strdup (filename ? filename : "");
- if (!g_ascii_strncasecmp (attachment->contentType, RFC_822, strlen (RFC_822))) {
- char *temp_id = NULL, *id = NULL;
- temp_id = (char *)camel_medium_get_header (CAMEL_MEDIUM ((CamelMimeMessage *)dw), "Message-Id");
- int len = strlen (temp_id);
-
- id = (char *)g_malloc0 (len-1);
- id = memcpy(id, temp_id+2, len-3);
-
- status = e_gw_connection_forward_item (cnc, id, NULL, TRUE, &temp_item);
- if (status != E_GW_CONNECTION_STATUS_OK)
+ if (camel_content_type_is (type, "message", "rfc822")) {
+ const char *message_id;
+ char *msgid;
+
+ message_id = camel_medium_get_header (CAMEL_MEDIUM (dw), "Message-Id");
+ msgid = camel_header_msgid_decode (message_id);
+
+ status = e_gw_connection_forward_item (cnc, msgid, NULL, TRUE, &temp_item);
+ g_free (msgid);
+
+ if (status != E_GW_CONNECTION_STATUS_OK) {
g_warning ("Could not send a forwardRequest...continuing without!!\n");
- else {
+ } else {
GSList *attach_list = e_gw_item_get_attach_id_list (temp_item);
EGwItemAttachment *temp_attach = (EGwItemAttachment *)attach_list->data;
attachment->id = g_strdup (temp_attach->id);
@@ -383,41 +369,36 @@
info = e_gw_item_get_link_info (temp_item);
e_gw_item_set_link_info (item, info);
}
- //attachment->id = g_strdup (id);
- g_free (id);
}
*attach_list = g_slist_append (*attach_list, attachment);
}
EGwItem *
-camel_groupwise_util_item_from_message (EGwConnection *cnc, CamelMimeMessage *message, CamelAddress *from, CamelAddress *recipients)
+camel_groupwise_util_item_from_message (EGwConnection *cnc, CamelMimeMessage *message, CamelAddress *from)
{
EGwItem *item;
EGwItemOrganizer *org = g_new0 (EGwItemOrganizer, 1);
-
const char *display_name = NULL, *email = NULL;
char *send_options = NULL;
CamelMultipart *mp;
- GSList *recipient_list = NULL, *attach_list = NULL;
+ GSList *recipient_list = NULL, *attach_list = NULL;
+ CamelAddress *recipients;
/*Egroupwise item*/
item = e_gw_item_new_empty ();
/*populate recipient list*/
- camel_address_remove(recipients,-1);
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO)));
+ recipients = CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO));
recipient_list=add_recipients(recipient_list,recipients,E_GW_ITEM_RECIPIENT_TO);
-
- camel_address_remove(recipients,-1);
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC)));
+
+ recipients = CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC));
recipient_list=add_recipients(recipient_list,recipients,E_GW_ITEM_RECIPIENT_CC);
- camel_address_remove(recipients,-1);
- camel_address_cat (recipients, CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_BCC)));
+ recipients = CAMEL_ADDRESS (camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_BCC));
recipient_list=add_recipients(recipient_list,recipients,E_GW_ITEM_RECIPIENT_BC);
-
-
+ recipient_list = g_slist_reverse (recipient_list);
+
/** Get the mime parts from CamelMimemessge **/
mp = (CamelMultipart *)camel_medium_get_content_object (CAMEL_MEDIUM (message));
if(!mp) {
@@ -434,25 +415,43 @@
CamelStreamMem *content = (CamelStreamMem *)camel_stream_mem_new ();
CamelDataWrapper *dw = NULL;
CamelContentType *type;
- char *buffer = NULL;
- char *content_type = NULL;
-
+
dw = camel_medium_get_content_object (CAMEL_MEDIUM (message));
type = camel_mime_part_get_content_type((CamelMimePart *)message);
- content_type = g_strdup_printf ("%s/%s", type->type, type->subtype);
- camel_data_wrapper_write_to_stream(dw, (CamelStream *)content);
- buffer = g_malloc0 (content->buffer->len+1);
- buffer = memcpy (buffer, content->buffer->data, content->buffer->len);
- if (!strcmp(content_type, "text/plain")) {
- e_gw_item_set_content_type (item, content_type);
- e_gw_item_set_message (item, buffer);
+ if (camel_content_type_is (type, "text", "plain")) {
+ CamelStream *filtered_stream;
+ CamelMimeFilter *filter;
+ const char *charset;
+ char *content_type;
+
+ content_type = camel_content_type_simple (type);
+ e_gw_item_set_content_type (item, content_type);
+ g_free (content_type);
+
+ charset = camel_content_type_param (type, "charset");
+ if (charset && g_ascii_strcasecmp (charset, "US-ASCII") && g_ascii_strcasecmp (charset, "UTF-8")) {
+ filter = camel_mime_filter_charset_new_convert (charset, "UTF-8");
+ filtered_stream = camel_stream_filter_new_with_stream ((CamelStream *) content);
+ camel_stream_filter_add ((CamelStreamFilter *) filtered_stream, filter);
+ camel_object_unref (filter);
+ } else {
+ /* US-ASCII or UTF-8 */
+ filtered_stream = (CamelStream *) content;
+ camel_object_ref (content);
+ }
+
+ camel_data_wrapper_decode_to_stream (dw, filtered_stream);
+ camel_stream_flush (filtered_stream);
+ camel_object_unref (filtered_stream);
+
+ camel_stream_write ((CamelStream *) content, "", 1);
+ e_gw_item_set_message (item, content->buffer->data);
} else {
- send_as_attachment (cnc, item, content, buffer, type, dw, NULL, "", NULL, &attach_list);
+ camel_data_wrapper_decode_to_stream (dw, (CamelStream *) content);
+ send_as_attachment (cnc, item, content, type, dw, NULL, NULL, &attach_list);
}
-
- g_free (buffer);
- g_free (content_type);
+
camel_object_unref (content);
}
/*Populate EGwItem*/
@@ -589,10 +588,7 @@
CamelStreamMem *content = (CamelStreamMem *)camel_stream_mem_new ();
CamelDataWrapper *dw = NULL;
const char *disposition, *filename;
- char *buffer = NULL;
- char *mime_type = NULL;
const char *content_id = NULL;
- char *encoding;
gboolean is_alternative = FALSE;
/*
* XXX:
@@ -601,55 +597,71 @@
*/
part = camel_multipart_get_part (mp, i);
type = camel_mime_part_get_content_type(part);
- if (CAMEL_IS_MULTIPART ((CamelMultipart *)camel_medium_get_content_object (part))) {
- do_multipart (cnc, item, (CamelMultipart *)camel_medium_get_content_object (part), attach_list);
- continue;
- } else
dw = camel_medium_get_content_object (CAMEL_MEDIUM (part));
+
+ if (CAMEL_IS_MULTIPART (dw)) {
+ do_multipart (cnc, item, (CamelMultipart *) camel_medium_get_content_object ((CamelMedium *) part), attach_list);
+ continue;
+ }
+
if (type->subtype && !strcmp (type->subtype, "alternative")) {
+ /* eh... I don't think this code will ever get hit? */
CamelMimePart *temp_part;
const char *cid = NULL;
CamelStreamMem *temp_content = (CamelStreamMem *)camel_stream_mem_new ();
temp_part = camel_multipart_get_part ((CamelMultipart *)dw, 1);
CamelDataWrapper *temp_dw = NULL;
+
if (temp_part) {
is_alternative = TRUE;
temp_dw = camel_medium_get_content_object (CAMEL_MEDIUM (temp_part));
camel_data_wrapper_write_to_stream(temp_dw, (CamelStream *)temp_content);
- buffer = g_malloc0 (temp_content->buffer->len+1);
- buffer = memcpy (buffer, temp_content->buffer->data, temp_content->buffer->len);
filename = camel_mime_part_get_filename (temp_part);
disposition = camel_mime_part_get_disposition (temp_part);
- mime_type = camel_data_wrapper_get_mime_type (temp_dw);
cid = camel_mime_part_get_content_id (temp_part);
- g_print ("%s:%s\n",filename,camel_transfer_encoding_to_string(temp_part->encoding));
- send_as_attachment (cnc, item, temp_content, buffer, type, temp_dw, filename, "", cid, attach_list);
- g_free (buffer);
- g_free (mime_type);
+ send_as_attachment (cnc, item, temp_content, type, temp_dw, filename, cid, attach_list);
}
camel_object_unref (temp_content);
continue;
}
-
- camel_data_wrapper_write_to_stream(dw, (CamelStream *)content);
- buffer = g_malloc0 (content->buffer->len+1);
- encoding = camel_transfer_encoding_to_string (part->encoding);
- filename = camel_mime_part_get_filename (part);
- buffer = memcpy (buffer, content->buffer->data, content->buffer->len);
- disposition = camel_mime_part_get_disposition (part);
- mime_type = camel_data_wrapper_get_mime_type (dw);
- content_id = camel_mime_part_get_content_id (part);
-
- if (i == 0 && !strcmp (mime_type, "text/plain") ) {
- e_gw_item_set_content_type (item, mime_type);
- e_gw_item_set_message (item, buffer);
+ if (i == 0 && camel_content_type_is (type, "text", "plain")) {
+ CamelStream *filtered_stream;
+ CamelMimeFilter *filter;
+ const char *charset;
+ char *content_type;
+
+ content_type = camel_content_type_simple (type);
+ e_gw_item_set_content_type (item, content_type);
+ g_free (content_type);
+
+ charset = camel_content_type_param (type, "charset");
+ if (charset && g_ascii_strcasecmp (charset, "US-ASCII") && g_ascii_strcasecmp (charset, "UTF-8")) {
+ filter = camel_mime_filter_charset_new_convert (charset, "UTF-8");
+ filtered_stream = camel_stream_filter_new_with_stream ((CamelStream *) content);
+ camel_stream_filter_add ((CamelStreamFilter *) filtered_stream, filter);
+ camel_object_unref (filter);
+ } else {
+ /* US-ASCII or UTF-8 */
+ filtered_stream = (CamelStream *) content;
+ camel_object_ref (content);
+ }
+
+ camel_data_wrapper_decode_to_stream (dw, filtered_stream);
+ camel_stream_flush (filtered_stream);
+ camel_object_unref (filtered_stream);
+
+ camel_stream_write ((CamelStream *) content, "", 1);
+ e_gw_item_set_message (item, content->buffer->data);
} else {
- send_as_attachment (cnc, item, content, buffer, type, dw, filename, encoding, content_id, attach_list);
+ filename = camel_mime_part_get_filename (part);
+ disposition = camel_mime_part_get_disposition (part);
+ content_id = camel_mime_part_get_content_id (part);
+
+ camel_data_wrapper_decode_to_stream (dw, (CamelStream *) content);
+ send_as_attachment (cnc, item, content, type, dw, filename, content_id, attach_list);
}
-
- g_free (buffer);
- g_free (mime_type);
+
camel_object_unref (content);
} /*end of for*/
}
Index: camel/providers/groupwise/camel-groupwise-utils.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-utils.h,v
retrieving revision 1.10
diff -u -r1.10 camel/providers/groupwise/camel-groupwise-utils.h
--- camel/providers/groupwise/camel-groupwise-utils.h 4 Jan 2006 16:48:35 -0000 1.10
+++ camel/providers/groupwise/camel-groupwise-utils.h 15 May 2006 18:01:10 -0000
@@ -71,9 +71,9 @@
int e_path_rmdir (const char *prefix, const char *vpath);
-EGwItem *camel_groupwise_util_item_from_message (EGwConnection *cnc, CamelMimeMessage *message, CamelAddress *from, CamelAddress *recipients);
+EGwItem *camel_groupwise_util_item_from_message (EGwConnection *cnc, CamelMimeMessage *message, CamelAddress *from);
+
void do_flags_diff (flags_diff_t *diff, guint32 old, guint32 _new);
-GSList *add_recipients(GSList *recipient_list, CamelAddress *recipients, int recipient_type);
char *gw_concat ( const char *prefix, const char *suffix);
void strip_lt_gt (char **string, int s_offset, int e_offset);
#endif

View File

@ -1,43 +1,6 @@
--- libedataserver/Makefile.am
+++ libedataserver/Makefile.am
@@ -7,7 +7,8 @@
-DE_DATA_SERVER_EXTENSIONDIR=\"$(extensiondir)\" \
-DE_DATA_SERVER_IMAGESDIR=\"$(imagesdir)\" \
-DE_DATA_SERVER_UI_GLADEDIR=\""$(gladedir)"\" \
- $(E_DATA_SERVER_CFLAGS)
+ $(E_DATA_SERVER_CFLAGS) \
+ $(SOUP_CFLAGS)
# The marshallers
MARSHAL_GENERATED = e-data-server-marshal.c e-data-server-marshal.h
@@ -32,6 +33,7 @@
e-list-iterator.c \
e-memory.c \
e-msgport.c \
+ e-proxy.c \
e-sexp.c \
e-source-group.c \
e-source-list.c \
@@ -50,7 +52,8 @@
$(E_DATA_SERVER_LIBS) \
$(ICONV_LIBS) \
$(DB_LIBS) \
- $(SOCKET_LIBS)
+ $(SOCKET_LIBS) \
+ $(SOUP_LIBS)
libedataserver_1_2_la_LDFLAGS = \
-version-info $(LIBEDATASERVER_CURRENT):$(LIBEDATASERVER_REVISION):$(LIBEDATASERVER_AGE) $(NO_UNDEFINED)
@@ -72,6 +75,7 @@
e-list-iterator.h \
e-memory.h \
e-msgport.h \
+ e-proxy.h \
e-sexp.h \
e-source-group.h \
e-source-list.h \
--- libedataserver/e-proxy.c
+++ libedataserver/e-proxy.c
=== added file 'libedataserver/e-proxy.c'
--- libedataserver/e-proxy.c 1970-01-01 00:00:00 +0000
+++ libedataserver/e-proxy.c 2007-12-18 17:02:13 +0000
@@ -0,0 +1,647 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
@ -686,8 +649,10 @@
+
+ return ret;
+}
--- libedataserver/e-proxy.h
+++ libedataserver/e-proxy.h
=== added file 'libedataserver/e-proxy.h'
--- libedataserver/e-proxy.h 1970-01-01 00:00:00 +0000
+++ libedataserver/e-proxy.h 2007-12-18 17:02:13 +0000
@@ -0,0 +1,63 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
@ -752,9 +717,51 @@
+G_END_DECLS
+
+#endif
--- servers/exchange/lib/e2k-context.c
+++ servers/exchange/lib/e2k-context.c
@@ -49,6 +49,7 @@
=== modified file 'libedataserver/Makefile.am'
--- libedataserver/Makefile.am 2007-12-18 16:36:30 +0000
+++ libedataserver/Makefile.am 2007-12-18 17:02:13 +0000
@@ -7,7 +7,8 @@
-DE_DATA_SERVER_EXTENSIONDIR=\"$(extensiondir)\" \
-DE_DATA_SERVER_IMAGESDIR=\"$(imagesdir)\" \
-DE_DATA_SERVER_UI_GLADEDIR=\""$(gladedir)"\" \
- $(E_DATA_SERVER_CFLAGS)
+ $(E_DATA_SERVER_CFLAGS) \
+ $(SOUP_CFLAGS)
lib_LTLIBRARIES = libedataserver-1.2.la
noinst_PROGRAMS = test-source-list
@@ -28,6 +29,7 @@
e-list-iterator.c \
e-memory.c \
e-msgport.c \
+ e-proxy.c \
e-sexp.c \
e-source-group.c \
e-source-list.c \
@@ -46,7 +48,8 @@
$(E_DATA_SERVER_LIBS) \
$(ICONV_LIBS) \
$(DB_LIBS) \
- $(SOCKET_LIBS)
+ $(SOCKET_LIBS) \
+ $(SOUP_LIBS)
libedataserver_1_2_la_LDFLAGS = \
-version-info $(LIBEDATASERVER_CURRENT):$(LIBEDATASERVER_REVISION):$(LIBEDATASERVER_AGE) $(NO_UNDEFINED)
@@ -69,6 +72,7 @@
e-list-iterator.h \
e-memory.h \
e-msgport.h \
+ e-proxy.h \
e-sexp.h \
e-source-group.h \
e-source-list.h \
=== modified file 'servers/exchange/lib/e2k-context.c'
--- servers/exchange/lib/e2k-context.c 2007-12-18 16:36:30 +0000
+++ servers/exchange/lib/e2k-context.c 2007-12-18 17:02:13 +0000
@@ -48,6 +48,7 @@
#include "e2k-utils.h"
#include "e2k-xml-utils.h"
@ -762,7 +769,7 @@
#include <libsoup/soup-address.h>
#include <libsoup/soup-message-filter.h>
#include <libsoup/soup-session-async.h>
@@ -104,6 +105,7 @@
@@ -103,6 +104,7 @@
/* Forms-based authentication */
char *cookie;
gboolean cookie_verified;
@ -770,7 +777,7 @@
};
/* For operations with progress */
@@ -113,6 +115,9 @@
@@ -112,6 +114,9 @@
/* For soup sync session timeout */
#define E2K_SOUP_SESSION_TIMEOUT 30
@ -780,7 +787,7 @@
#ifdef E2K_DEBUG
char *e2k_debug;
int e2k_debug_level;
@@ -123,6 +128,31 @@
@@ -122,6 +127,31 @@
static gboolean do_notification (GIOChannel *source, GIOCondition condition, gpointer data);
static void setup_message (SoupMessageFilter *filter, SoupMessage *msg);
@ -812,7 +819,7 @@
static void
init (GObject *object)
@@ -134,6 +164,9 @@
@@ -133,6 +163,9 @@
g_hash_table_new (g_str_hash, g_str_equal);
ctx->priv->subscriptions_by_uri =
g_hash_table_new (g_str_hash, g_str_equal);
@ -822,7 +829,7 @@
}
static void
@@ -180,8 +213,13 @@
@@ -179,8 +212,13 @@
g_free (ctx->priv->cookie);
@ -836,7 +843,7 @@
}
G_OBJECT_CLASS (parent_class)->dispose (object);
@@ -361,6 +399,7 @@
@@ -360,6 +398,7 @@
const char *password)
{
guint timeout = E2K_SOUP_SESSION_TIMEOUT;
@ -844,15 +851,14 @@
g_return_if_fail (E2K_IS_CONTEXT (ctx));
@@ -390,10 +429,15 @@
*/
@@ -390,9 +429,15 @@
if (g_getenv ("SOUP_SESSION_TIMEOUT"))
timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
-
+
+ /* Check do we need a proxy to contact the server? */
+ if (e_proxy_require_proxy_for_uri (ctx->priv->proxy, ctx->priv->owa_uri))
+ uri = e_proxy_peek_uri (ctx->priv->proxy);
+ if (e_proxy_require_proxy_for_uri (ctx->priv->proxy, ctx->priv->owa_uri))
+ uri = e_proxy_peek_uri (ctx->priv->proxy);
+
+
ctx->priv->session = soup_session_sync_new_with_options (
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
@ -861,7 +867,7 @@
NULL);
g_signal_connect (ctx->priv->session, "authenticate",
G_CALLBACK (session_authenticate), ctx);
@@ -402,7 +446,7 @@
@@ -401,7 +446,7 @@
ctx->priv->async_session = soup_session_async_new_with_options (
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
@ -870,8 +876,10 @@
g_signal_connect (ctx->priv->async_session, "authenticate",
G_CALLBACK (session_authenticate), ctx);
soup_session_add_filter (ctx->priv->async_session,
--- servers/groupwise/Makefile.am
+++ servers/groupwise/Makefile.am
=== modified file 'servers/groupwise/Makefile.am'
--- servers/groupwise/Makefile.am 2007-12-18 16:36:30 +0000
+++ servers/groupwise/Makefile.am 2007-12-18 17:02:13 +0000
@@ -15,9 +15,10 @@
$(E_DATA_SERVER_LIBS)
@ -885,9 +893,11 @@
+ libegroupwise-1.2.la \
$(E_DATA_SERVER_LIBS)
lib_LTLIBRARIES = libegroupwise-1.2.la
--- servers/groupwise/e-gw-connection.c
+++ servers/groupwise/e-gw-connection.c
build-timestamp.h : $(top_builddir)/config.h
=== modified file 'servers/groupwise/e-gw-connection.c'
--- servers/groupwise/e-gw-connection.c 2007-12-18 16:36:30 +0000
+++ servers/groupwise/e-gw-connection.c 2007-12-18 17:02:13 +0000
@@ -27,6 +27,7 @@
#include <string.h>
#include <ctype.h>
@ -896,7 +906,7 @@
#include <libsoup/soup-session-sync.h>
#include <libsoup/soup-soap-message.h>
#include <libsoup/soup-misc.h>
@@ -37,6 +38,9 @@
@@ -38,6 +39,9 @@
/* For soup sync session timeout */
#define GW_SOUP_SESSION_TIMEOUT 30
@ -906,7 +916,7 @@
static GObjectClass *parent_class = NULL;
static GHashTable *loaded_connections_permissions = NULL;
@@ -57,8 +61,37 @@
@@ -58,8 +62,37 @@
GList *book_list;
EGwSendOptions *opts;
GMutex *reauth_mutex;
@ -915,36 +925,36 @@
+static void
+update_soup_session_proxy_settings (EProxy *proxy, SoupSession* session,
+ const char* uri)
+ const char* uri)
+{
+ SoupUri *proxy_uri = NULL;
+ SoupUri *proxy_uri = NULL;
+
+ if (!session || !uri || !proxy)
+ return;
+
+ if (e_proxy_require_proxy_for_uri (proxy, uri))
+ proxy_uri = e_proxy_peek_uri (proxy);
+
+ if (!session || !uri || !proxy)
+ return;
+
+ if (e_proxy_require_proxy_for_uri (proxy, uri))
+ proxy_uri = e_proxy_peek_uri (proxy);
+
+ g_object_set (session, SOUP_SESSION_PROXY_URI,
+ proxy_uri, NULL);
+ g_object_set (session, SOUP_SESSION_PROXY_URI,
+ proxy_uri, NULL);
+}
+
+static void
+proxy_settings_changed (EProxy *proxy, gpointer user_data)
+{
+ EGwConnection* conn = (EGwConnection *)user_data;
+ if (!conn || !conn->priv || !conn->priv->soup_session)
+ return;
+
+ update_soup_session_proxy_settings (proxy,
+ conn->priv->soup_session,
+ conn->priv->uri);
+ EGwConnection* conn = (EGwConnection *)user_data;
+ if (!conn || !conn->priv || !conn->priv->soup_session)
+ return;
+
+ update_soup_session_proxy_settings (proxy,
+ conn->priv->soup_session,
+ conn->priv->uri);
+}
+
static EGwConnectionStatus
reauthenticate (EGwConnection *cnc)
static EGwConnectionStatus
reauthenticate (EGwConnection *cnc)
{
@@ -319,6 +352,11 @@
@@ -343,6 +376,11 @@
g_free (priv->server_time) ;
priv->server_time = NULL ;
}
@ -956,34 +966,31 @@
}
if (parent_class->dispose)
@@ -369,6 +407,11 @@
*/
@@ -394,6 +432,11 @@
if (g_getenv ("SOUP_SESSION_TIMEOUT"))
timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
+
+ /* Initialize proxy settings */
+ priv->proxy = e_proxy_new ();
+ e_proxy_setup_proxy (priv->proxy);
+ g_signal_connect (priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), cnc);
+ /* Initialize proxy settings */
+ priv->proxy = e_proxy_new ();
+ e_proxy_setup_proxy (priv->proxy);
+ g_signal_connect (priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), cnc);
+
/* create the SoupSession for this connection */
priv->soup_session = soup_session_sync_new_with_options (SOUP_SESSION_TIMEOUT, timeout, NULL);
@@ -448,11 +491,17 @@
return cnc;
priv->reauth_mutex = g_mutex_new ();
@@ -477,7 +520,13 @@
}
}
-
+ /* Set proxy details for the Soup session before any
+ communication.
+ */
+ update_soup_session_proxy_settings (cnc->priv->proxy,
+ cnc->priv->soup_session,
+ uri);
+
/* not found, so create a new connection */
cnc = g_object_new (E_TYPE_GW_CONNECTION, NULL);
+ /* Set proxy details for the Soup session before any
+ communication.
+ */
+ update_soup_session_proxy_settings (cnc->priv->proxy,
+ cnc->priv->soup_session,
+ uri);
+
msg = form_login_request (uri, username, password);
/* send message to server */

View File

@ -1,208 +0,0 @@
Index: libedataserver/e-msgport.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/libedataserver/e-msgport.c,v
retrieving revision 1.6
diff -u -r1.6 e-msgport.c
--- libedataserver/e-msgport.c 10 Jan 2006 07:59:04 -0000 1.6
+++ libedataserver/e-msgport.c 31 May 2006 21:06:57 -0000
@@ -70,7 +70,13 @@
e_pipe (int *fds)
{
#ifndef G_OS_WIN32
- return pipe (fds);
+ if (pipe (fds) != -1)
+ return 0;
+
+ fds[0] = -1;
+ fds[1] = -1;
+
+ return -1;
#else
SOCKET temp, socket1 = -1, socket2 = -1;
struct sockaddr_in saddr;
@@ -180,8 +186,11 @@
closesocket (socket1);
out0:
closesocket (temp);
- errno = EIO; /* XXX */
-
+ errno = EMFILE; /* FIXME: use the real syscall errno? */
+
+ fds[0] = -1;
+ fds[1] = -1;
+
return -1;
#endif
@@ -487,9 +496,12 @@
} fd;
} pipe;
#ifdef HAVE_NSS
- struct {
- PRFileDesc *read;
- PRFileDesc *write;
+ union {
+ PRFileDesc *pipe[2];
+ struct {
+ PRFileDesc *read;
+ PRFileDesc *write;
+ } fd;
} prpipe;
#endif
/* @#@$#$ glib stuff */
@@ -497,6 +509,26 @@
GMutex *lock;
};
+
+#ifdef HAVE_NSS
+static int
+e_prpipe (PRFileDesc **fds)
+{
+#ifdef G_OS_WIN32
+ if (PR_NewTCPSocketPair (fds) != PR_FAILURE)
+ return 0;
+#else
+ if (PR_CreatePipe (&fds[0], &fds[1]) != PR_FAILURE)
+ return 0;
+#endif
+
+ fds[0] = NULL;
+ fds[1] = NULL;
+
+ return -1;
+}
+#endif
+
EMsgPort *e_msgport_new(void)
{
EMsgPort *mp;
@@ -505,11 +537,9 @@
e_dlist_init(&mp->queue);
mp->lock = g_mutex_new();
mp->cond = g_cond_new();
- mp->pipe.fd.read = -1;
- mp->pipe.fd.write = -1;
+ e_pipe (mp->pipe.pipe);
#ifdef HAVE_NSS
- mp->prpipe.read = NULL;
- mp->prpipe.write = NULL;
+ e_prpipe (mp->prpipe.pipe);
#endif
mp->condwait = 0;
@@ -525,9 +555,9 @@
E_CLOSE(mp->pipe.fd.write);
}
#ifdef HAVE_NSS
- if (mp->prpipe.read) {
- PR_Close(mp->prpipe.read);
- PR_Close(mp->prpipe.write);
+ if (mp->prpipe.fd.read) {
+ PR_Close(mp->prpipe.fd.read);
+ PR_Close(mp->prpipe.fd.write);
}
#endif
g_free(mp);
@@ -536,40 +566,13 @@
/* get a fd that can be used to wait on the port asynchronously */
int e_msgport_fd(EMsgPort *mp)
{
- int fd;
-
- g_mutex_lock(mp->lock);
- fd = mp->pipe.fd.read;
- if (fd == -1) {
- e_pipe(mp->pipe.pipe);
- fd = mp->pipe.fd.read;
- }
- g_mutex_unlock(mp->lock);
-
- return fd;
+ return mp->pipe.fd.read;
}
#ifdef HAVE_NSS
PRFileDesc *e_msgport_prfd(EMsgPort *mp)
{
- PRFileDesc *fd;
-
- g_mutex_lock(mp->lock);
- fd = mp->prpipe.read;
- if (fd == NULL) {
-#ifdef G_OS_WIN32
- PRFileDesc *fds[2];
- PR_NewTCPSocketPair (fds);
- mp->prpipe.read = fds[0];
- mp->prpipe.write = fds[1];
-#else
- PR_CreatePipe(&mp->prpipe.read, &mp->prpipe.write);
-#endif
- fd = mp->prpipe.read;
- }
- g_mutex_unlock(mp->lock);
-
- return fd;
+ return mp->prpipe.fd.read;
}
#endif
@@ -579,7 +582,7 @@
#ifdef HAVE_NSS
PRFileDesc *prfd;
#endif
-
+
m(printf("put:\n"));
g_mutex_lock(mp->lock);
e_dlist_addtail(&mp->queue, &msg->ln);
@@ -587,9 +590,10 @@
m(printf("put: condwait > 0, waking up\n"));
g_cond_signal(mp->cond);
}
+
fd = mp->pipe.fd.write;
#ifdef HAVE_NSS
- prfd = mp->prpipe.write;
+ prfd = mp->prpipe.fd.write;
#endif
g_mutex_unlock(mp->lock);
@@ -626,7 +630,7 @@
fd_set rfds;
int retry;
- m(printf("wait: waitng on pipe\n"));
+ m(printf("wait: waiting on pipe\n"));
g_mutex_unlock(mp->lock);
do {
FD_ZERO(&rfds);
@@ -637,14 +641,14 @@
g_mutex_lock(mp->lock);
m(printf("wait: got pipe\n"));
#ifdef HAVE_NSS
- } else if (mp->prpipe.read != NULL) {
+ } else if (mp->prpipe.fd.read != NULL) {
PRPollDesc polltable[1];
int retry;
m(printf("wait: waitng on pr pipe\n"));
g_mutex_unlock(mp->lock);
do {
- polltable[0].fd = mp->prpipe.read;
+ polltable[0].fd = mp->prpipe.fd.read;
polltable[0].in_flags = PR_POLL_READ|PR_POLL_ERR;
retry = PR_Poll(polltable, 1, PR_INTERVAL_NO_TIMEOUT) == -1 && PR_GetError() == PR_PENDING_INTERRUPT_ERROR;
pthread_testcancel();
@@ -681,9 +685,9 @@
if (mp->pipe.fd.read != -1)
E_READ(mp->pipe.fd.read, dummy, 1);
#ifdef HAVE_NSS
- if (mp->prpipe.read != NULL) {
+ if (mp->prpipe.fd.read != NULL) {
int c;
- c = PR_Read(mp->prpipe.read, dummy, 1);
+ c = PR_Read(mp->prpipe.fd.read, dummy, 1);
g_assert(c == 1);
}
#endif

View File

@ -1,20 +0,0 @@
Index: camel/providers/imap/camel-imap-command.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-command.c,v
retrieving revision 1.76.2.2
diff -u -r1.76.2.2 camel/providers/imap/camel-imap-command.c
--- camel/providers/imap/camel-imap-command.c 19 May 2006 15:21:37 -0000 1.76.2.2
+++ camel/providers/imap/camel-imap-command.c 22 May 2006 16:00:09 -0000
@@ -438,10 +438,9 @@
fulllen += str->len;
g_ptr_array_add (data, str);
- p = strrchr (str->str, '{');
- if (!p)
+ if (!(p = strrchr (str->str, '{')) || p[1] == '-')
break;
-
+
/* HACK ALERT: We scan the non-literal part of the string, looking for possible s expression braces.
This assumes we're getting s-expressions, which we should be.
This is so if we get a blank line after a literal, in an s-expression, we can keep going, since

View File

@ -1,554 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.114.2.12
diff -u -r1.114.2.12 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 6 Jun 2006 19:51:03 -0000 1.114.2.12
+++ camel/providers/groupwise/camel-groupwise-folder.c 8 Jun 2006 15:32:24 -0000
@@ -63,15 +63,6 @@
#define GROUPWISE_BULK_DELETE_LIMIT 100
static CamelOfflineFolderClass *parent_class = NULL;
-struct _CamelGroupwiseFolderPrivate {
-
-#ifdef ENABLE_THREADS
- EMutex *search_lock; /* for locking the search object */
- EMutex *cache_lock; /* for locking the cache object */
-#endif
-
-};
-
/*prototypes*/
static void groupwise_transfer_messages_to (CamelFolder *source,
GPtrArray *uids,
@@ -94,9 +85,7 @@
#define d(x)
static CamelMimeMessage *
-groupwise_folder_get_message( CamelFolder *folder,
- const char *uid,
- CamelException *ex )
+groupwise_folder_get_message (CamelFolder *folder, const char *uid, CamelException *ex)
{
CamelMimeMessage *msg = NULL;
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
@@ -107,11 +96,10 @@
EGwConnectionStatus status;
EGwConnection *cnc;
EGwItem *item;
- CamelStream *stream, *cache_stream;
+ CamelStream *stream;
int errno;
/* see if it is there in cache */
-
mi = (CamelGroupwiseMessageInfo *) camel_folder_summary_uid (folder->summary, uid);
if (mi == NULL) {
camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
@@ -119,41 +107,38 @@
return NULL;
}
- cache_stream = camel_data_cache_get (gw_folder->cache, "cache", uid, ex);
- stream = camel_stream_mem_new ();
- if (cache_stream) {
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
+
+ if ((stream = camel_data_cache_get (gw_folder->cache, "cache", uid, ex))) {
msg = camel_mime_message_new ();
- camel_stream_reset (stream);
- camel_stream_write_to_stream (cache_stream, stream);
- camel_stream_reset (stream);
if (camel_data_wrapper_construct_from_stream ((CamelDataWrapper *) msg, stream) == -1) {
if (errno == EINTR) {
camel_exception_setv (ex, CAMEL_EXCEPTION_USER_CANCEL, _("User cancelled"));
camel_object_unref (msg);
- camel_object_unref (cache_stream);
camel_object_unref (stream);
camel_message_info_free (&mi->info);
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
return NULL;
- } else {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot get message %s: %s"),
- uid, g_strerror (errno));
- camel_object_unref (msg);
- msg = NULL;
}
+
+ camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot get message %s: %s"),
+ uid, g_strerror (errno));
+ camel_object_unref (stream);
+ camel_object_unref (msg);
+ msg = NULL;
+ } else {
+ camel_object_unref (stream);
+ camel_message_info_free (&mi->info);
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
+ return msg;
}
- camel_object_unref (cache_stream);
- }
- camel_object_unref (stream);
-
- if (msg != NULL) {
- camel_message_info_free (&mi->info);
- return msg;
}
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("This message is not available in offline mode."));
camel_message_info_free (&mi->info);
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
return NULL;
}
@@ -162,6 +147,7 @@
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("This message is not available in offline mode."));
camel_message_info_free (&mi->info);
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
return NULL;
}
@@ -173,6 +159,7 @@
g_free (container_id);
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Could not get message"));
camel_message_info_free (&mi->info);
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
return NULL;
}
@@ -181,30 +168,30 @@
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Could not get message"));
g_free (container_id);
camel_message_info_free (&mi->info);
-
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
return NULL;
}
- if (msg)
- camel_medium_set_header (CAMEL_MEDIUM (msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
+ camel_medium_set_header (CAMEL_MEDIUM (msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
- if(!strcmp (folder->full_name, "Sent Items"))
+ if (!strcmp (folder->full_name, "Sent Items"))
goto end; /*Dont cache if its sent items, since we need to Track Status*/
/* add to cache */
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
- if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", uid, NULL))) {
- if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) msg, cache_stream) == -1
- || camel_stream_flush (cache_stream) == -1)
+ if ((stream = camel_data_cache_add (gw_folder->cache, "cache", uid, NULL))) {
+ if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) msg, stream) == -1
+ || camel_stream_flush (stream) == -1)
camel_data_cache_remove (gw_folder->cache, "cache", uid, NULL);
- camel_object_unref (cache_stream);
+ camel_object_unref (stream);
}
-
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
end:
+
camel_message_info_free (&mi->info);
g_free (container_id);
+
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
+
return msg;
}
@@ -411,18 +398,20 @@
summary_path = g_strdup_printf ("%s/summary", folder_dir);
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
+
g_free (gw_folder->cache->path);
gw_folder->cache->path = g_strdup (folder_dir);
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
-
+
((CamelFolderClass *)parent_class)->rename(folder, new);
camel_folder_summary_set_filename (folder->summary, summary_path);
-
+
state_file = g_strdup_printf ("%s/cmeta", folder_dir);
camel_object_set(folder, NULL, CAMEL_OBJECT_STATE_FILE, state_file, NULL);
g_free (state_file);
-
+
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
+
g_free (summary_path);
g_free (folder_dir);
}
@@ -433,10 +422,12 @@
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
GPtrArray *matches;
- CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_lock);
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
+
camel_folder_search_set_folder (gw_folder->search, folder);
matches = camel_folder_search_search(gw_folder->search, expression, NULL, ex);
- CAMEL_GROUPWISE_FOLDER_UNLOCK(gw_folder, search_lock);
+
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
return matches;
}
@@ -450,12 +441,12 @@
if (uids->len == 0)
return g_ptr_array_new();
- CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_lock);
-
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
+
camel_folder_search_set_folder(gw_folder->search, folder);
matches = camel_folder_search_search(gw_folder->search, expression, uids, ex);
- CAMEL_GROUPWISE_FOLDER_UNLOCK(gw_folder, search_lock);
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
return matches;
}
@@ -467,12 +458,11 @@
g_return_if_fail (gw_folder->search);
- CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_lock);
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
camel_folder_search_free_result (gw_folder->search, uids);
-
- CAMEL_GROUPWISE_FOLDER_UNLOCK(gw_folder, search_lock);
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
}
/******************* functions specific to Junk Mail Handling**************/
@@ -596,31 +586,29 @@
EGwConnectionStatus status;
EGwConnection *cnc;
int count, i;
-
GList *deleted_items, *deleted_head = NULL;
deleted_items = NULL;
-
-
+
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
+
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
groupwise_sync_summary (folder, ex);
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
return;
}
cnc = cnc_lookup (priv);
container_id = camel_groupwise_store_container_id_lookup (gw_store, folder->full_name) ;
-
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
+
if (!camel_groupwise_store_connected (gw_store, ex)) {
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
camel_exception_clear (ex);
return;
}
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
-
+
count = camel_folder_summary_count (folder->summary);
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
for (i=0 ; i <count ; i++) {
guint32 flags = 0;
info = camel_folder_summary_index (folder->summary, i);
@@ -659,17 +647,13 @@
}
if (g_list_length (deleted_items) == GROUPWISE_BULK_DELETE_LIMIT ) {
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
if (status == E_GW_CONNECTION_STATUS_OK) {
char *uid;
while (deleted_items) {
uid = (char *)deleted_items->data;
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
camel_folder_summary_remove_uid (folder->summary, uid);
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
deleted_items = g_list_next (deleted_items);
count -= GROUPWISE_BULK_DELETE_LIMIT;
i -= GROUPWISE_BULK_DELETE_LIMIT;
@@ -681,19 +665,15 @@
}
camel_message_info_free (info);
}
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
+
if (deleted_items) {
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
if (status == E_GW_CONNECTION_STATUS_OK) {
char *uid;
while (deleted_items) {
uid = (char *)deleted_items->data;
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
camel_folder_summary_remove_uid (folder->summary, uid);
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
deleted_items = g_list_next (deleted_items);
count -= GROUPWISE_BULK_DELETE_LIMIT;
i -= GROUPWISE_BULK_DELETE_LIMIT;
@@ -702,23 +682,17 @@
g_list_free (deleted_head);
}
- if (read_items && g_list_length (read_items)) {
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
+ if (read_items && g_list_length (read_items))
e_gw_connection_mark_read (cnc, read_items);
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
- }
-
+
if (expunge) {
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
status = e_gw_connection_purge_deleted_items (cnc);
- if (status == E_GW_CONNECTION_STATUS_OK) {
+ if (status == E_GW_CONNECTION_STATUS_OK)
g_message ("Purged deleted items in %s", folder->name);
- }
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
}
-
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
+
groupwise_sync_summary (folder, ex);
+
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
}
@@ -732,7 +706,6 @@
char *summary_file, *state_file, *journal_file;
char *short_name;
-
folder = CAMEL_FOLDER (camel_object_new(camel_groupwise_folder_get_type ()) );
gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
@@ -1063,7 +1036,7 @@
gw_update_cache (folder, list, ex, FALSE);
}
}
-
+
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
is_locked = FALSE;
@@ -1097,7 +1070,6 @@
end1:
if (is_locked)
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
- return;
}
static void
@@ -1318,7 +1290,6 @@
mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
if (mail_msg)
camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", id, NULL))) {
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) mail_msg, cache_stream) == -1 || camel_stream_flush (cache_stream) == -1)
camel_data_cache_remove (gw_folder->cache, "cache", id, NULL);
@@ -1326,7 +1297,6 @@
}
camel_object_unref (mail_msg);
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
}
/******************** Caching stuff ends *************************/
i++;
@@ -1720,6 +1690,7 @@
static void
gw_update_all_items ( CamelFolder *folder, GList *item_list, CamelException *ex)
{
+ CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (folder);
GPtrArray *summary = NULL;
int index = 0;
@@ -1741,11 +1712,11 @@
temp = g_list_find_custom (item_list, (const char *)info->uid, (GCompareFunc) strcmp);
}
if (!temp) {
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
camel_folder_summary_remove_uid (folder->summary, info->uid);
camel_data_cache_remove (gw_folder->cache, "cache", info->uid, ex);
camel_folder_change_info_remove_uid (changes, info->uid);
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
} else {
item_list = g_list_delete_link (item_list, temp);
}
@@ -1754,8 +1725,6 @@
camel_object_trigger_event (folder, "folder_changed", changes);
if (item_list) {
- CamelGroupwiseStore *gw_store = CAMEL_GROUPWISE_STORE (folder->parent_store);
-
CAMEL_SERVICE_LOCK (gw_store, connect_lock);
gw_update_cache (folder, item_list, ex, TRUE);
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
@@ -1801,6 +1770,7 @@
cnc = cnc_lookup (priv);
CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
+
/*Get the container id*/
container_id = camel_groupwise_store_container_id_lookup (gw_store, folder->full_name) ;
@@ -1974,15 +1944,15 @@
int i, max;
gboolean delete = FALSE;
GList *deleted_items, *deleted_head = NULL;
-
deleted_items = NULL;
cnc = cnc_lookup (priv);
if (!cnc)
return;
-
+
+ CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
+
if (!strcmp (folder->full_name, "Trash")) {
- CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
status = e_gw_connection_purge_deleted_items (cnc);
if (status == E_GW_CONNECTION_STATUS_OK) {
camel_folder_freeze (folder);
@@ -1997,7 +1967,7 @@
changes = camel_folder_change_info_new ();
container_id = g_strdup (camel_groupwise_store_container_id_lookup (groupwise_store, folder->full_name)) ;
-
+
max = camel_folder_summary_count (folder->summary);
for (i = 0; i < max; i++) {
info = camel_folder_summary_index (folder->summary, i);
@@ -2013,18 +1983,14 @@
}
if (g_list_length (deleted_items) == GROUPWISE_BULK_DELETE_LIMIT ) {
/* Read the FIXME below */
- CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
- CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
if (status == E_GW_CONNECTION_STATUS_OK) {
char *uid;
while (deleted_items) {
uid = (char *)deleted_items->data;
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
camel_folder_change_info_remove_uid (changes, uid);
camel_folder_summary_remove_uid (folder->summary, uid);
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
deleted_items = g_list_next (deleted_items);
max -= GROUPWISE_BULK_DELETE_LIMIT;
i -= GROUPWISE_BULK_DELETE_LIMIT;
@@ -2038,18 +2004,14 @@
if (deleted_items) {
/* FIXME: Put these in a function and reuse it inside the above loop, here and in groupwise_sync*/
- CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
- CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
if (status == E_GW_CONNECTION_STATUS_OK) {
char *uid;
while (deleted_items) {
uid = (char *)deleted_items->data;
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
camel_folder_change_info_remove_uid (changes, uid);
camel_folder_summary_remove_uid (folder->summary, uid);
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
deleted_items = g_list_next (deleted_items);
}
}
@@ -2063,6 +2025,8 @@
g_free (container_id);
camel_folder_change_info_free (changes);
+
+ CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
}
@@ -2093,18 +2057,11 @@
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (object);
CamelFolder *folder = CAMEL_FOLDER (object);
-
folder->permanent_flags = CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_DELETED |
CAMEL_MESSAGE_DRAFT | CAMEL_MESSAGE_FLAGGED | CAMEL_MESSAGE_SEEN;
folder->folder_flags = CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY | CAMEL_FOLDER_HAS_SEARCH_CAPABILITY;
- gw_folder->priv = g_malloc0 (sizeof(*gw_folder->priv));
-
-#ifdef ENABLE_THREADS
- gw_folder->priv->search_lock = e_mutex_new(E_MUTEX_SIMPLE);
- gw_folder->priv->cache_lock = e_mutex_new(E_MUTEX_REC);
-#endif
gw_folder->need_rescan = TRUE;
}
@@ -2112,21 +2069,17 @@
camel_groupwise_folder_finalize (CamelObject *object)
{
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (object);
-
- if (gw_folder->priv)
- g_free(gw_folder->priv);
+
if (gw_folder->cache)
camel_object_unref (gw_folder->cache);
if (gw_folder->search)
camel_object_unref (gw_folder->search);
-
}
CamelType
camel_groupwise_folder_get_type (void)
{
static CamelType camel_groupwise_folder_type = CAMEL_INVALID_TYPE;
-
if (camel_groupwise_folder_type == CAMEL_INVALID_TYPE) {
camel_groupwise_folder_type =
Index: camel/providers/groupwise/camel-groupwise-folder.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.h,v
retrieving revision 1.8
diff -u -r1.8 camel-groupwise-folder.h
--- camel/providers/groupwise/camel-groupwise-folder.h 31 Aug 2005 04:26:07 -0000 1.8
+++ camel/providers/groupwise/camel-groupwise-folder.h 8 Jun 2006 15:32:24 -0000
@@ -54,8 +54,6 @@
struct _CamelGroupwiseFolder {
CamelOfflineFolder parent_object;
- struct _CamelGroupwiseFolderPrivate *priv;
-
CamelFolderSearch *search;
CamelOfflineJournal *journal;

View File

@ -1,16 +0,0 @@
Index: servers/exchange/storage/exchange-account.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-account.c,v
retrieving revision 1.32
diff -u -p -r1.32 exchange-account.c
--- servers/exchange/storage/exchange-account.c 10 May 2006 08:55:24 -0000 1.32
+++ servers/exchange/storage/exchange-account.c 6 Jun 2006 08:24:29 -0000
@@ -1984,6 +1984,8 @@ exchange_account_new (EAccountList *acco
}
account = g_object_new (EXCHANGE_TYPE_ACCOUNT, NULL);
+ if (!account)
+ return NULL;
account->priv->account_list = account_list;
g_object_ref (account_list);
account->priv->account = adata;

View File

@ -1,174 +0,0 @@
--- calendar/backends/groupwise/e-cal-backend-groupwise.c.orig 2006-06-26 14:26:10.000000000 +0530
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c 2006-06-26 14:30:26.000000000 +0530
@@ -132,13 +132,19 @@ populate_cache (ECalBackendGroupwise *cb
EGwConnectionStatus status;
ECalComponent *comp;
GList *list = NULL, *l;
- gboolean done = FALSE;
+ gboolean done = FALSE, forward = FALSE;
int cursor = 0;
guint32 total, num = 0;
- int percent = 0;
+ int percent = 0, i;
const char *position = E_GW_CURSOR_POSITION_END;
icalcomponent_kind kind;
const char *type;
+ EGwFilter* filter[3];
+ char l_str[26];
+ char h_str[26];
+ icaltimetype temp;
+ struct tm tm;
+ time_t h_time, l_time;
priv = cbgw->priv;
kind = e_cal_backend_get_kind (E_CAL_BACKEND (cbgw));
@@ -155,66 +161,101 @@ populate_cache (ECalBackendGroupwise *cb
else
type = "Task";
- status = e_gw_connection_create_cursor (priv->cnc,
- priv->container_id,
- "recipients message recipientStatus attachments default peek", NULL, &cursor);
- if (status != E_GW_CONNECTION_STATUS_OK) {
- e_cal_backend_groupwise_notify_error_code (cbgw, status);
- g_mutex_unlock (mutex);
- return status;
- }
-
- while (!done) {
-
- status = e_gw_connection_read_cursor (priv->cnc, priv->container_id, cursor, FALSE, CURSOR_ITEM_LIMIT, position, &list);
+ /* Fetch the data with a bias to present, near past/future */
+ temp = icaltime_current_time_with_zone (icaltimezone_get_utc_timezone ());
+ i = g_ascii_strtod (g_getenv ("PRELOAD_WINDOW_DAYS")? g_getenv ("PRELOAD_WINDOW_DAYS"):"15", NULL);
+ temp.day -= i;
+ icaltime_normalize (temp);
+ l_time = icaltime_as_timet_with_zone (temp, icaltimezone_get_utc_timezone ());
+ gmtime_r (&l_time, &tm);
+ strftime (l_str, 26, "%Y-%m-%dT%H:%M:%SZ", &tm);
+ temp.day += (2*i);
+ icaltime_normalize (temp);
+ h_time = icaltime_as_timet_with_zone (temp, icaltimezone_get_utc_timezone ());
+ gmtime_r (&h_time, &tm);
+ strftime (h_str, 26, "%Y-%m-%dT%H:%M:%SZ", &tm);
+
+ filter[0] = e_gw_filter_new ();
+ e_gw_filter_add_filter_component (filter[0], E_GW_FILTER_OP_GREATERTHAN_OR_EQUAL, "startDate", l_str);
+ e_gw_filter_add_filter_component (filter[0], E_GW_FILTER_OP_LESSTHAN_OR_EQUAL, "startDate", h_str);
+ e_gw_filter_group_conditions (filter[0], E_GW_FILTER_OP_AND, 2);
+ filter[1] = e_gw_filter_new ();
+ e_gw_filter_add_filter_component (filter[1], E_GW_FILTER_OP_GREATERTHAN, "startDate", h_str);
+ filter[2] = e_gw_filter_new ();
+ e_gw_filter_add_filter_component (filter[2], E_GW_FILTER_OP_LESSTHAN, "startDate", l_str);
+
+ for (i = 0; i < 3; i++) {
+ status = e_gw_connection_create_cursor (priv->cnc,
+ priv->container_id,
+ "recipients message recipientStatus attachments default peek", filter[i], &cursor);
if (status != E_GW_CONNECTION_STATUS_OK) {
e_cal_backend_groupwise_notify_error_code (cbgw, status);
g_mutex_unlock (mutex);
return status;
}
- for (l = list; l != NULL; l = g_list_next(l)) {
- EGwItem *item;
- char *progress_string = NULL;
+ done = FALSE;
+ if (i == 1) {
+ position = E_GW_CURSOR_POSITION_START;
+ forward = TRUE;
+
+ } else {
+ position = E_GW_CURSOR_POSITION_END;
+ forward = FALSE;
+ }
- item = E_GW_ITEM (l->data);
- comp = e_gw_item_to_cal_component (item, cbgw);
- g_object_unref (item);
+ while (!done) {
- /* Show the progress information */
- num++;
- percent = ((float) num/total) * 100;
-
- /* FIXME The total obtained from the server is wrong. Sometimes the num can
- be greater than the total. The following makes sure that the percentage is not >= 100 */
-
- if (percent > 100)
- percent = 99;
-
- progress_string = g_strdup_printf (_("Loading %s items"), type);
- e_cal_backend_notify_view_progress (E_CAL_BACKEND (cbgw), progress_string, percent);
+ status = e_gw_connection_read_cursor (priv->cnc, priv->container_id, cursor, forward, CURSOR_ITEM_LIMIT, position, &list);
+ if (status != E_GW_CONNECTION_STATUS_OK) {
+ e_cal_backend_groupwise_notify_error_code (cbgw, status);
+ g_mutex_unlock (mutex);
+ return status;
+ }
+ for (l = list; l != NULL; l = g_list_next(l)) {
+ EGwItem *item;
+ char *progress_string = NULL;
+
+ item = E_GW_ITEM (l->data);
+ comp = e_gw_item_to_cal_component (item, cbgw);
+ g_object_unref (item);
+
+ /* Show the progress information */
+ num++;
+ percent = ((float) num/total) * 100;
- if (E_IS_CAL_COMPONENT (comp)) {
- char *comp_str;
+ /* FIXME The total obtained from the server is wrong. Sometimes the num can
+ be greater than the total. The following makes sure that the percentage is not >= 100 */
+
+ if (percent > 100)
+ percent = 99;
+
+ progress_string = g_strdup_printf (_("Loading %s items"), type);
+ e_cal_backend_notify_view_progress (E_CAL_BACKEND (cbgw), progress_string, percent);
- e_cal_component_commit_sequence (comp);
- if (kind == icalcomponent_isa (e_cal_component_get_icalcomponent (comp))) {
- comp_str = e_cal_component_get_as_string (comp);
- e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), (const char *) comp_str);
- g_free (comp_str);
+ if (E_IS_CAL_COMPONENT (comp)) {
+ char *comp_str;
+
+ e_cal_component_commit_sequence (comp);
+ if (kind == icalcomponent_isa (e_cal_component_get_icalcomponent (comp))) {
+ comp_str = e_cal_component_get_as_string (comp);
+ e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), (const char *) comp_str);
+ g_free (comp_str);
+ }
+ e_cal_backend_cache_put_component (priv->cache, comp);
+ g_object_unref (comp);
}
- e_cal_backend_cache_put_component (priv->cache, comp);
- g_object_unref (comp);
+ g_free (progress_string);
}
- g_free (progress_string);
+
+ if (!list || g_list_length (list) == 0)
+ done = TRUE;
+ g_list_free (list);
+ list = NULL;
+ position = E_GW_CURSOR_POSITION_CURRENT;
}
-
- if (!list || g_list_length (list) == 0)
- done = TRUE;
- g_list_free (list);
- list = NULL;
- position = E_GW_CURSOR_POSITION_CURRENT;
- }
- e_gw_connection_destroy_cursor (priv->cnc, priv->container_id, cursor);
+ e_gw_connection_destroy_cursor (priv->cnc, priv->container_id, cursor);
+ g_object_unref (filter[i]);
+ }
e_cal_backend_notify_view_done (E_CAL_BACKEND (cbgw), GNOME_Evolution_Calendar_Success);
g_mutex_unlock (mutex);

View File

@ -1,11 +1,12 @@
--- servers/exchange/lib/e2k-autoconfig.c~ 2007-08-31 16:46:14.000000000 +0530
+++ servers/exchange/lib/e2k-autoconfig.c 2007-08-31 20:28:37.000000000 +0530
@@ -342,7 +342,18 @@ void
=== modified file 'servers/exchange/lib/e2k-autoconfig.c'
--- servers/exchange/lib/e2k-autoconfig.c 2007-12-18 18:57:46 +0000
+++ servers/exchange/lib/e2k-autoconfig.c 2007-12-18 18:58:09 +0000
@@ -343,7 +343,18 @@
e2k_autoconfig_set_creds (E2kAutoconfig *ac,
E2kCreds *creds)
E2kCreds *creds)
{
+ char *username, *password, *authmech;
ac->creds = creds;
ac->creds = creds;
+
+ authmech = creds->http_auth_method (creds);
+ creds->http_authenticate (creds, authmech, NULL, &username, &password);
@ -19,3 +20,4 @@
}
/*

View File

@ -1,8 +1,7 @@
Index: calendar/libecal/e-cal-util.h
===================================================================
--- calendar/libecal/e-cal-util.h.orig
+++ calendar/libecal/e-cal-util.h
@@ -127,6 +127,7 @@ gboolean e_cal_util_event_dates_match (i
=== modified file 'calendar/libecal/e-cal-util.h'
--- calendar/libecal/e-cal-util.h 2007-12-18 16:36:30 +0000
+++ calendar/libecal/e-cal-util.h 2007-12-18 19:02:28 +0000
@@ -127,6 +127,7 @@
#define CAL_STATIC_CAPABILITY_NO_ORGANIZER "no-organizer"
#define CAL_STATIC_CAPABILITY_DELEGATE_TO_MANY "delegate-to-many"
#define CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING "has-unaccepted-meeting"
@ -10,28 +9,28 @@ Index: calendar/libecal/e-cal-util.h
/* Recurrent events. Management for instances */
icalcomponent *e_cal_util_construct_instance (icalcomponent *icalcomp,
Index: calendar/libecal/e-cal.c
===================================================================
--- calendar/libecal/e-cal.c.orig
+++ calendar/libecal/e-cal.c
@@ -1624,13 +1624,15 @@ open_calendar (ECal *ecal, gboolean only
CORBA_Environment ev;
=== modified file 'calendar/libecal/e-cal.c'
--- calendar/libecal/e-cal.c 2007-12-18 18:57:46 +0000
+++ calendar/libecal/e-cal.c 2007-12-18 19:02:28 +0000
@@ -1631,12 +1631,15 @@
ECalendarOp *our_op;
char *username = NULL, *auth_type = NULL, *password = NULL;
- gboolean read_only = FALSE;
+ gboolean read_only = FALSE, no_auth;
gboolean read_only = FALSE;
+ gboolean no_auth;
e_return_error_if_fail (ecal != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
-
+
+ no_auth = e_cal_get_static_capability (ecal, CAL_STATIC_CAPABILITY_HAS_SMART_CARD);
+
g_mutex_lock (ecal->priv->mutex);
if (!needs_auth && priv->load_state == E_CAL_LOAD_LOADED) {
@@ -1649,7 +1651,7 @@ open_calendar (ECal *ecal, gboolean only
@@ -1655,7 +1658,7 @@
g_mutex_unlock (priv->mutex);
/* see if the backend needs authentication */
@ -40,7 +39,7 @@ Index: calendar/libecal/e-cal.c
char *prompt, *key;
char *parent_user;
@@ -2413,11 +2415,6 @@ load_static_capabilities (ECal *ecal, GE
@@ -2419,11 +2422,6 @@
g_mutex_lock (ecal->priv->mutex);
@ -52,11 +51,11 @@ Index: calendar/libecal/e-cal.c
if (ecal->priv->current_op != NULL) {
g_mutex_unlock (ecal->priv->mutex);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
Index: servers/exchange/storage/exchange-account.c
===================================================================
--- servers/exchange/storage/exchange-account.c.orig
+++ servers/exchange/storage/exchange-account.c
@@ -2498,3 +2498,11 @@ exchange_account_get_hierarchy_by_type (
=== modified file 'servers/exchange/storage/exchange-account.c'
--- servers/exchange/storage/exchange-account.c 2007-12-18 18:57:46 +0000
+++ servers/exchange/storage/exchange-account.c 2007-12-18 19:02:28 +0000
@@ -2500,3 +2500,11 @@
}
return NULL;
}
@ -68,16 +67,17 @@ Index: servers/exchange/storage/exchange-account.c
+
+ return acct->priv->password_key;
+}
Index: servers/exchange/storage/exchange-account.h
===================================================================
--- servers/exchange/storage/exchange-account.h.orig
+++ servers/exchange/storage/exchange-account.h
@@ -202,7 +202,7 @@ void exchange_account_folder_size_ren
=== modified file 'servers/exchange/storage/exchange-account.h'
--- servers/exchange/storage/exchange-account.h 2007-12-18 18:57:46 +0000
+++ servers/exchange/storage/exchange-account.h 2007-12-18 19:02:28 +0000
@@ -202,7 +202,7 @@
GtkListStore *exchange_account_folder_size_get_model (ExchangeAccount *account);
void exchange_account_scan_foreign_hierarchy (ExchangeAccount *account,
void exchange_account_scan_foreign_hierarchy (ExchangeAccount *account,
const char *user_email);
-
+const char * exchange_account_get_password_key (ExchangeAccount *acct);
#ifdef __cplusplus
}

View File

@ -1,190 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.130
diff -u -p -r1.130 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 18 Apr 2006 15:15:30 -0000 1.130
+++ camel/providers/groupwise/camel-groupwise-folder.c 24 Apr 2006 08:37:43 -0000
@@ -61,6 +61,7 @@
#define JUNK_FOLDER "Junk Mail"
#define READ_CURSOR_MAX_IDS 500
#define MAX_ATTACHMENT_SIZE 1*1024*1024 /*In bytes*/
+#define GROUPWISE_BULK_DELETE_LIMIT 100
static CamelOfflineFolderClass *parent_class = NULL;
@@ -586,7 +587,11 @@ groupwise_sync (CamelFolder *folder, gbo
EGwConnectionStatus status;
EGwConnection *cnc;
int count, i;
-
+
+ GList *deleted_items, *deleted_head=NULL;
+
+ deleted_items = NULL;
+
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
groupwise_sync_summary (folder, ex);
@@ -606,7 +611,7 @@ groupwise_sync (CamelFolder *folder, gbo
count = camel_folder_summary_count (folder->summary);
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
- for (i=0 ; i <count ; i++) {
+ for (i=0 ; i < count ; i++) {
guint32 flags = 0;
info = camel_folder_summary_index (folder->summary, i);
gw_info = (CamelGroupwiseMessageInfo *) info;
@@ -635,22 +640,57 @@ groupwise_sync (CamelFolder *folder, gbo
if (diff.changed & CAMEL_MESSAGE_SEEN)
read_items = g_list_append (read_items, (char *)uid);
if (diff.changed & CAMEL_MESSAGE_DELETED) {
- CAMEL_SERVICE_LOCK (gw_store, connect_lock);
- status = e_gw_connection_remove_item (cnc, container_id, uid);
- if (status == E_GW_CONNECTION_STATUS_OK) {
- CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
- camel_folder_summary_remove (folder->summary, info);
- camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
- CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
- i--; count--;
+ if (deleted_items)
+ deleted_items = g_list_prepend (deleted_items, (char *)camel_message_info_uid (info));
+ else {
+ g_list_free (deleted_head);
+ deleted_head = NULL;
+ deleted_head = deleted_items = g_list_prepend (deleted_items, (char *)camel_message_info_uid (info));
+ }
+
+ if (g_list_length (deleted_items) == GROUPWISE_BULK_DELETE_LIMIT ) {
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
+ status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
+ if (status == E_GW_CONNECTION_STATUS_OK) {
+ char *uid;
+ while (deleted_items) {
+ uid = (char *)deleted_items->data;
+ CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
+ camel_folder_summary_remove_uid (folder->summary, uid);
+ camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
+ CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
+ deleted_items = g_list_next (deleted_items);
+ count -= GROUPWISE_BULK_DELETE_LIMIT;
+ i -= GROUPWISE_BULK_DELETE_LIMIT;
+ }
+ }
}
- CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
}
}
}
camel_message_info_free (info);
}
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
+ if (deleted_items) {
+ CAMEL_SERVICE_LOCK (gw_store, connect_lock);
+ status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
+ CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
+ if (status == E_GW_CONNECTION_STATUS_OK) {
+ char *uid;
+ while (deleted_items) {
+ uid = (char *)deleted_items->data;
+ CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
+ camel_folder_summary_remove_uid (folder->summary, uid);
+ camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
+ CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
+ deleted_items = g_list_next (deleted_items);
+ count -= GROUPWISE_BULK_DELETE_LIMIT;
+ i -= GROUPWISE_BULK_DELETE_LIMIT;
+ }
+ }
+ g_list_free (deleted_head);
+ }
if (read_items && g_list_length (read_items)) {
CAMEL_SERVICE_LOCK (gw_store, connect_lock);
@@ -1960,8 +2000,10 @@ groupwise_expunge (CamelFolder *folder,
CamelFolderChangeInfo *changes;
int i, max;
gboolean delete = FALSE;
+ GList *deleted_items, *deleted_head=NULL;
+
-
+ deleted_items = NULL;
cnc = cnc_lookup (priv);
if (!cnc)
return;
@@ -1988,26 +2030,62 @@ groupwise_expunge (CamelFolder *folder,
info = camel_folder_summary_index (folder->summary, i);
ginfo = (CamelGroupwiseMessageInfo *) info;
if (ginfo && (ginfo->info.flags & CAMEL_MESSAGE_DELETED)) {
- const char *uid = camel_message_info_uid (info);
- CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
- status = e_gw_connection_remove_item (cnc, container_id, uid);
- if (status == E_GW_CONNECTION_STATUS_OK) {
+
+ if (deleted_items)
+ deleted_items = g_list_prepend (deleted_items, (char *)camel_message_info_uid (info));
+ else {
+ g_list_free (deleted_head);
+ deleted_head = NULL;
+ deleted_head = deleted_items = g_list_prepend (deleted_items, (char *)camel_message_info_uid (info));
+ }
+ if (g_list_length (deleted_items) == GROUPWISE_BULK_DELETE_LIMIT ) {
+ /* Read the FIXME below */
+ CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
+ status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
+ CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
+ if (status == E_GW_CONNECTION_STATUS_OK) {
+ char *uid;
+ while (deleted_items) {
+ uid = (char *)deleted_items->data;
+ CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
+ camel_folder_change_info_remove_uid (changes, uid);
+ camel_folder_summary_remove_uid (folder->summary, uid);
+ camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
+ CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
+ deleted_items = g_list_next (deleted_items);
+ max -= GROUPWISE_BULK_DELETE_LIMIT;
+ i -= GROUPWISE_BULK_DELETE_LIMIT;
+ }
+ }
+ delete = TRUE;
+ }
+ }
+ camel_message_info_free (info);
+ }
+
+ if (deleted_items) {
+ /* FIXME: Put these in a function and reuse it inside the above loop, here and in groupwise_sync*/
+ CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
+ status = e_gw_connection_remove_items (cnc, container_id, deleted_items);
+ CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
+ if (status == E_GW_CONNECTION_STATUS_OK) {
+ char *uid;
+ while (deleted_items) {
+ uid = (char *)deleted_items->data;
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
- camel_folder_change_info_remove_uid (changes, (char *) uid);
- camel_folder_summary_remove (folder->summary, info);
+ camel_folder_change_info_remove_uid (changes, uid);
+ camel_folder_summary_remove_uid (folder->summary, uid);
camel_data_cache_remove(gw_folder->cache, "cache", uid, ex);
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
- delete = TRUE;
- i--; max--;
+ deleted_items = g_list_next (deleted_items);
}
- CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
}
- camel_message_info_free (info);
+ delete = TRUE;
+ g_list_free (deleted_head);
}
if (delete)
camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
-
g_free (container_id);
camel_folder_change_info_free (changes);

View File

@ -1,17 +0,0 @@
Index: calendar/libical/src/libical/icalvalue.c
===================================================================
RCS file: /cvs/gnome/libical/src/libical/icalvalue.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -p -r1.22 -r1.23
--- calendar/libical/src/libical/icalvalue.c 15 Jun 2006 14:42:21 -0000 1.22
+++ calendar/libical/src/libical/icalvalue.c 3 Jul 2006 14:29:43 -0000 1.23
@@ -1346,7 +1346,7 @@ int icalvalue_decode_ical_string(const c
icalmemory_append_char(&str,&str_p,&buf_sz,'\0');
- if ((int)strlen(str) >= nMaxBufferLen) {
+ if ((int)strlen(str) > nMaxBufferLen) {
return 0;
}

View File

@ -1,298 +0,0 @@
diff -Nrup camel/providers/groupwise/camel-groupwise-folder.c /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 2006-03-23 14:08:09.734955209 +0100
+++ /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-folder.c 2006-03-23 12:07:49.000000000 +0100
@@ -92,7 +92,7 @@ static void gw_update_cache ( CamelFolde
static CamelMimeMessage *groupwise_folder_item_to_msg ( CamelFolder *folder, EGwItem *item, CamelException *ex );
-#define d(x) x
+#define d(x)
static CamelMimeMessage *
groupwise_folder_get_message( CamelFolder *folder,
@@ -635,9 +635,10 @@ groupwise_sync (CamelFolder *folder, gbo
diff.changed &= folder->permanent_flags;
/* weed out flag changes that we can't sync to the server */
- if (!diff.changed)
+ if (!diff.changed) {
camel_message_info_free(info);
- else {
+ continue;
+ } else {
const char *uid = camel_message_info_uid (info);
if (diff.changed & CAMEL_MESSAGE_SEEN)
read_items = g_list_append (read_items, (char *)uid);
@@ -656,7 +657,6 @@ groupwise_sync (CamelFolder *folder, gbo
}
}
camel_message_info_free (info);
- info = NULL;
}
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
@@ -989,7 +989,6 @@ groupwise_refresh_folder(CamelFolder *fo
/* The storing of time-stamp to summary code below should be commented if the
above commented code is uncommented */
-
if (summary->time_string)
g_free (summary->time_string);
@@ -1047,7 +1046,7 @@ end1:
return;
}
-void
+static void
gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean uid_flag)
{
CamelGroupwiseMessageInfo *mi = NULL;
@@ -1069,6 +1068,7 @@ gw_update_cache (CamelFolder *folder, GL
int total_items = g_list_length (item_list), i=0;
/*Assert lock*/
+ CAMEL_SERVICE_ASSERT_LOCKED (gw_store, connect_lock);
changes = camel_folder_change_info_new ();
container_id = g_strdup (camel_groupwise_store_container_id_lookup (gw_store, folder->full_name));
if (!container_id) {
@@ -1092,8 +1092,9 @@ gw_update_cache (CamelFolder *folder, GL
const char *id;
GSList *recp_list = NULL;
status_flags = 0;
- CamelStream *cache_stream;
+ CamelStream *cache_stream, *t_cache_stream;
CamelMimeMessage *mail_msg = NULL;
+ gboolean is_sent_folder = FALSE;
exists = FALSE;
@@ -1118,11 +1119,7 @@ gw_update_cache (CamelFolder *folder, GL
if (pmi) {
exists = TRUE;
camel_message_info_ref (pmi);
- mi = (CamelGroupwiseMessageInfo *)camel_message_info_clone(pmi);
- /*
- pmi->summary = folder->summary;
- mi->info.summary = folder->summary;
- */
+ mi = (CamelGroupwiseMessageInfo *)pmi;
}
if (!exists) {
@@ -1146,9 +1143,15 @@ gw_update_cache (CamelFolder *folder, GL
item_status = e_gw_item_get_item_status (item);
if (item_status & E_GW_ITEM_STAT_READ)
status_flags |= CAMEL_MESSAGE_SEEN;
+ else
+ mi->info.flags &= ~CAMEL_MESSAGE_SEEN;
+
if (item_status & E_GW_ITEM_STAT_REPLIED)
status_flags |= CAMEL_MESSAGE_ANSWERED;
- mi->info.flags |= status_flags;
+ if (exists)
+ mi->info.flags |= status_flags;
+ else
+ mi->info.flags = status_flags;
priority = e_gw_item_get_priority (item);
if (priority && !(g_ascii_strcasecmp (priority,"High"))) {
@@ -1222,12 +1225,7 @@ gw_update_cache (CamelFolder *folder, GL
mi->info.date_sent = mi->info.date_received = actual_time;
}
}
-#if 0
-
- if (exists)
- g_free(mi->info.uid);
- mi->info.uid = g_strdup(e_gw_item_get_id(item));
-#endif
+
if (!exists) {
mi->info.uid = g_strdup (e_gw_item_get_id(item));
mi->info.size = e_gw_item_get_mail_size (item);
@@ -1235,12 +1233,7 @@ gw_update_cache (CamelFolder *folder, GL
}
if (exists) {
- /*
camel_folder_change_info_change_uid (changes, mi->info.uid);
- camel_message_info_free (&mi->info);*/
- camel_folder_summary_remove(folder->summary, pmi);
- camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
- camel_folder_change_info_add_uid (changes, mi->info.uid);
camel_message_info_free (pmi);
} else {
camel_folder_summary_add (folder->summary,(CamelMessageInfo *)mi);
@@ -1253,13 +1246,17 @@ gw_update_cache (CamelFolder *folder, GL
continue;
if (!strcmp (folder->full_name, "Sent Items"))
- exists = FALSE;
+ is_sent_folder = TRUE;
/******************** Begine Caching ************************/
/* add to cache if its a new message*/
- if (!exists) {
+ t_cache_stream = camel_data_cache_get (gw_folder->cache, "cache", id, ex);
+ if (t_cache_stream && !is_sent_folder) {
+ camel_object_unref (t_cache_stream);
+
mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
if (mail_msg)
camel_medium_set_header (CAMEL_MEDIUM (mail_msg), "X-Evolution-Source", groupwise_base_url_lookup (priv));
+
CAMEL_GROUPWISE_FOLDER_LOCK (folder, cache_lock);
if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", id, NULL))) {
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) mail_msg, cache_stream) == -1 || camel_stream_flush (cache_stream) == -1)
@@ -1579,7 +1576,6 @@ groupwise_folder_item_to_msg( CamelFolde
}
g_object_unref (temp_item);
} else {
- g_print ("%d:%d\n", attach->size, MAX_ATTACHMENT_SIZE);
if (attach->size > MAX_ATTACHMENT_SIZE) {
long count = 0;
int i, t_len=0, offset=0, t_offset=0;
@@ -1743,7 +1739,7 @@ groupwise_append_message (CamelFolder *f
CamelGroupwiseStorePrivate *priv = gw_store->priv;
CamelOfflineStore *offline = (CamelOfflineStore *) folder->parent_store;
CamelAddress *recipients;
- EGwConnectionStatus status = E_GW_CONNECTION_STATUS_OK;
+ EGwConnectionStatus status;
EGwConnection *cnc;
EGwItem *item;
char *id;
diff -Nrup camel/providers/groupwise/camel-groupwise-store.c /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-store.c
--- camel/providers/groupwise/camel-groupwise-store.c 2006-03-23 14:08:09.722954807 +0100
+++ /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-store.c 2006-03-23 10:26:40.000000000 +0100
@@ -461,16 +461,15 @@ groupwise_build_folder_info(CamelGroupwi
name = fi->full_name;
else
name++;
-
- if (!strcmp (folder_name, "Sent Items"))
- fi->flags |= CAMEL_FOLDER_TYPE_SENT;
- else if (!strcmp (folder_name, "Mailbox"))
- fi->flags |= CAMEL_FOLDER_TYPE_INBOX;
- else if (!strcmp (folder_name, "Trash"))
- fi->flags |= CAMEL_FOLDER_TYPE_TRASH;
- else if (!strcmp (folder_name, "Junk Mail"))
- fi->flags |= CAMEL_FOLDER_TYPE_JUNK;
-
+ if (!strcmp (folder_name, "Sent Items"))
+ fi->flags |= CAMEL_FOLDER_TYPE_SENT;
+ else if (!strcmp (folder_name, "Mailbox"))
+ fi->flags |= CAMEL_FOLDER_TYPE_INBOX;
+ else if (!strcmp (folder_name, "Trash"))
+ fi->flags |= CAMEL_FOLDER_TYPE_TRASH;
+ else if (!strcmp (folder_name, "Junk Mail"))
+ fi->flags |= CAMEL_FOLDER_TYPE_JUNK;
+
fi->name = g_strdup(name);
return fi;
}
@@ -690,7 +689,7 @@ gw_store_reload_folder (CamelGroupwiseSt
{
CamelGroupwiseStorePrivate *priv = gw_store->priv;
CamelGroupwiseSummary *summary;
- char *container_id, *folder_dir, *storage_path;
+ char *container_id;
EGwConnectionStatus status;
GList *list = NULL;
gboolean done = FALSE;
@@ -751,11 +750,9 @@ gw_store_reload_folder (CamelGroupwiseSt
if (status != E_GW_CONNECTION_STATUS_OK) {
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
e_gw_connection_destroy_cursor (priv->cnc, container_id, cursor);
- camel_folder_summary_clear (folder->summary);
camel_folder_summary_save (folder->summary);
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
camel_operation_end (NULL);
- camel_object_unref (folder);
g_free (container_id);
return;
}
@@ -981,6 +978,10 @@ groupwise_folders_sync (CamelGroupwiseSt
info = NULL;
}
}
+ if (store->current_folder && strcmp (store->current_folder->full_name, info->full_name) == 0) {
+ g_print ("Syncing up %s\n", info->full_name);
+ CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS (store->current_folder))->sync(store->current_folder, FALSE, ex);
+ }
}
g_free ((char *)url);
@@ -1153,7 +1154,8 @@ groupwise_get_folder_info (CamelStore *s
}
CAMEL_SERVICE_LOCK (store, connect_lock);
- if ((groupwise_store->list_loaded == FALSE) && check_for_connection((CamelService *)store, ex)) {
+/* if ((groupwise_store->list_loaded == FALSE) && check_for_connection((CamelService *)store, ex)) {*/
+ if (check_for_connection((CamelService *)store, ex)) {
if (!priv->cnc) {
if (groupwise_connect ((CamelService *)store, ex)) {
g_warning ("Could connect!!!\n");
@@ -1161,7 +1163,7 @@ groupwise_get_folder_info (CamelStore *s
g_warning ("Could not connect..failure connecting\n");
}
if (camel_groupwise_store_connected ((CamelGroupwiseStore *)store, ex)) {
- groupwise_store->list_loaded = TRUE;
+ /*groupwise_store->list_loaded = TRUE;*/
groupwise_folders_sync (groupwise_store, ex);
if (camel_exception_is_set (ex)) {
CAMEL_SERVICE_UNLOCK (store, connect_lock);
@@ -1173,7 +1175,7 @@ groupwise_get_folder_info (CamelStore *s
}
CAMEL_SERVICE_UNLOCK (store, connect_lock);
- //camel_exception_clear (ex);
+ /*camel_exception_clear (ex);*/
info = groupwise_get_folder_info_offline (store, top, flags, ex);
return info;
}
diff -Nrup camel/providers/groupwise/camel-groupwise-utils.c /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-utils.c
--- camel/providers/groupwise/camel-groupwise-utils.c 2006-03-23 14:08:09.702954138 +0100
+++ /root/varadhan/2.5/mar-23/head/evolution-data-server-1.5.92/camel/providers/groupwise/camel-groupwise-utils.c 2006-03-21 07:12:04.000000000 +0100
@@ -432,7 +432,7 @@ camel_groupwise_util_item_from_message (
} else {
/*only message*/
CamelStreamMem *content = (CamelStreamMem *)camel_stream_mem_new ();
- CamelDataWrapper *dw = camel_data_wrapper_new ();
+ CamelDataWrapper *dw = NULL;
CamelContentType *type;
char *buffer = NULL;
char *content_type = NULL;
@@ -587,7 +587,7 @@ do_multipart (EGwConnection *cnc, EGwIte
CamelContentType *type;
CamelMimePart *part;
CamelStreamMem *content = (CamelStreamMem *)camel_stream_mem_new ();
- CamelDataWrapper *dw = camel_data_wrapper_new ();
+ CamelDataWrapper *dw = NULL;
const char *disposition, *filename;
char *buffer = NULL;
char *mime_type = NULL;
@@ -611,7 +611,7 @@ do_multipart (EGwConnection *cnc, EGwIte
const char *cid = NULL;
CamelStreamMem *temp_content = (CamelStreamMem *)camel_stream_mem_new ();
temp_part = camel_multipart_get_part ((CamelMultipart *)dw, 1);
- CamelDataWrapper *temp_dw = camel_data_wrapper_new ();
+ CamelDataWrapper *temp_dw = NULL;
if (temp_part) {
is_alternative = TRUE;
temp_dw = camel_medium_get_content_object (CAMEL_MEDIUM (temp_part));
@@ -628,8 +628,6 @@ do_multipart (EGwConnection *cnc, EGwIte
g_free (mime_type);
}
camel_object_unref (temp_content);
- camel_object_unref (temp_dw);
- camel_object_unref (dw);
continue;
}
@@ -653,6 +651,5 @@ do_multipart (EGwConnection *cnc, EGwIte
g_free (buffer);
g_free (mime_type);
camel_object_unref (content);
- camel_object_unref (dw);
} /*end of for*/
}

View File

@ -1,393 +0,0 @@
--- configure.in.old 2006-05-23 07:34:48.254719640 +0200
+++ configure.in 2006-05-23 07:35:07.050359111 +0200
@@ -1199,7 +1199,7 @@
AC_MSG_ERROR([*** zlib is required])
fi
-EVO_SET_COMPILE_FLAGS(CAMEL, gthread-2.0 gmodule-2.0 gobject-2.0 $mozilla_nss,
+EVO_SET_COMPILE_FLAGS(CAMEL, gthread-2.0 gmodule-2.0 gobject-2.0 $mozilla_nss gnome-vfs-2.0,
$THREADS_CFLAGS $KRB4_CFLAGS $KRB5_CFLAGS $MANUAL_NSS_CFLAGS,
-lz $THREADS_LIBS $KRB4_LDFLAGS $KRB5_LDFLAGS $MANUAL_NSS_LIBS)
AC_SUBST(CAMEL_CFLAGS)
Index: camel/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/Makefile.am,v
retrieving revision 1.213
diff -u -p -r1.213 Makefile.am
--- camel/Makefile.am 4 Jan 2006 23:47:07 -0000 1.213
+++ camel/Makefile.am 23 May 2006 03:54:24 -0000
@@ -201,6 +201,7 @@ libcamel_1_2_la_SOURCES = \
camel-stream-fs.c \
camel-stream-mem.c \
camel-stream-null.c \
+ camel-stream-vfs.c \
camel-stream.c \
camel-string-utils.c \
camel-text-index.c \
@@ -270,6 +271,7 @@ libcamelinclude_HEADERS = \
camel-stream-mem.h \
camel-stream-null.h \
camel-stream-process.h \
+ camel-stream-vfs.h \
camel-stream.h \
camel-string-utils.h \
camel-text-index.h \
--- /dev/null 2006-04-26 01:42:37.000000000 +0530
+++ camel/camel-stream-vfs.c 2006-05-18 16:42:45.000000000 +0530
@@ -0,0 +1,281 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* camel-stream-vfs.c : file system based stream */
+
+/*
+ * Authors: Srinivasa Ragavan <sragavan@novell.com>
+ *
+ * Copyright 2006 Novell, Inc. (www.novell.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <string.h>
+
+#include <glib/gstdio.h>
+
+#include "camel-file-utils.h"
+#include "camel-operation.h"
+#include "camel-private.h"
+#include "camel-stream-vfs.h"
+
+static CamelSeekableStreamClass *parent_class = NULL;
+
+/* Returns the class for a CamelStreamVFS */
+#define CSVFS_CLASS(so) CAMEL_STREAM_VFS_CLASS (CAMEL_OBJECT_GET_CLASS(so))
+
+static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n);
+static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n);
+/* static int stream_flush (CamelStream *stream); */
+static int stream_close (CamelStream *stream);
+static off_t stream_seek (CamelSeekableStream *stream, off_t offset,
+ CamelStreamSeekPolicy policy);
+
+static void
+camel_stream_vfs_class_init (CamelStreamVFSClass *camel_stream_vfs_class)
+{
+ CamelSeekableStreamClass *camel_seekable_stream_class =
+ CAMEL_SEEKABLE_STREAM_CLASS (camel_stream_vfs_class);
+ CamelStreamClass *camel_stream_class =
+ CAMEL_STREAM_CLASS (camel_stream_vfs_class);
+
+ parent_class = CAMEL_SEEKABLE_STREAM_CLASS (camel_type_get_global_classfuncs (camel_seekable_stream_get_type ()));
+
+ /* virtual method overload */
+ camel_stream_class->read = stream_read;
+ camel_stream_class->write = stream_write;
+/* camel_stream_class->flush = stream_flush; */
+ camel_stream_class->close = stream_close;
+
+ camel_seekable_stream_class->seek = stream_seek;
+}
+
+static void
+camel_stream_vfs_init (gpointer object, gpointer klass)
+{
+ CamelStreamVFS *stream = CAMEL_STREAM_VFS (object);
+
+ stream->handle = (gpointer) -1;
+ ((CamelSeekableStream *)stream)->bound_end = CAMEL_STREAM_UNBOUND;
+}
+
+static void
+camel_stream_vfs_finalize (CamelObject *object)
+{
+ CamelStreamVFS *stream_vfs = CAMEL_STREAM_VFS (object);
+
+ if (stream_vfs->handle != -1)
+ close (stream_vfs->handle);
+}
+
+
+CamelType
+camel_stream_vfs_get_type (void)
+{
+ static CamelType camel_stream_vfs_type = CAMEL_INVALID_TYPE;
+
+ if (camel_stream_vfs_type == CAMEL_INVALID_TYPE) {
+ camel_stream_vfs_type = camel_type_register (camel_seekable_stream_get_type (), "CamelStreamVFS",
+ sizeof (CamelStreamVFS),
+ sizeof (CamelStreamVFSClass),
+ (CamelObjectClassInitFunc) camel_stream_vfs_class_init,
+ NULL,
+ (CamelObjectInitFunc) camel_stream_vfs_init,
+ (CamelObjectFinalizeFunc) camel_stream_vfs_finalize);
+ }
+
+ return camel_stream_vfs_type;
+}
+
+/**
+ * camel_stream_vfs_new_with_handle:
+ * @handle: a GnomeVFS handle
+ *
+ * Creates a new fs stream using the given GnomeVFS handle @handle as the
+ * backing store. When the stream is destroyed, the file descriptor
+ * will be closed.
+ *
+ * Returns a new #CamelStreamVFS
+ **/
+CamelStream *
+camel_stream_vfs_new_with_handle (GnomeVFSHandle *handle)
+{
+ CamelStreamVFS *stream_vfs;
+ off_t offset;
+ GnomeVFSResult result;
+
+ if (!handle)
+ return NULL;
+
+ stream_vfs = CAMEL_STREAM_VFS (camel_object_new (camel_stream_vfs_get_type ()));
+ stream_vfs->handle = handle;
+ gnome_vfs_seek (handle, GNOME_VFS_SEEK_CURRENT, 0);
+ offset = 0;
+ CAMEL_SEEKABLE_STREAM (stream_vfs)->position = offset;
+
+ return CAMEL_STREAM (stream_vfs);
+}
+
+/**
+ * camel_stream_vfs_new_with_uri:
+ * @name: a file uri
+ * @flags: flags as in open(2)
+ * @mode: a file mode
+ *
+ * Creates a new #CamelStreamVFS corresponding to the named file, flags,
+ * and mode.
+ *
+ * Returns the new stream, or %NULL on error.
+ **/
+CamelStream *
+camel_stream_vfs_new_with_uri (const char *name, int flags, mode_t mode)
+{
+ GnomeVFSResult result;
+ GnomeVFSHandle *handle;
+ int vfs_flag = 0;
+
+ if (flags & O_WRONLY)
+ vfs_flag = vfs_flag | GNOME_VFS_OPEN_WRITE;
+ if (flags & O_RDONLY)
+ vfs_flag = vfs_flag | GNOME_VFS_OPEN_READ;
+ if (flags & O_RDWR)
+ vfs_flag = vfs_flag | GNOME_VFS_OPEN_READ |GNOME_VFS_OPEN_WRITE;
+
+ if (flags & O_CREAT)
+ result = gnome_vfs_create (&handle, name, vfs_flag, flags & O_TRUNC, mode);
+ else
+ result = gnome_vfs_open (&handle, name, vfs_flag);
+
+ if (result != GNOME_VFS_OK) {
+ return NULL;
+ }
+
+ return camel_stream_vfs_new_with_handle (handle);
+}
+
+static ssize_t
+stream_read (CamelStream *stream, char *buffer, size_t n)
+{
+ CamelStreamVFS *stream_vfs = CAMEL_STREAM_VFS (stream);
+ CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
+ ssize_t nread = 0;
+ GnomeVFSResult result;
+
+ if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
+ n = MIN (seekable->bound_end - seekable->position, n);
+
+ result = gnome_vfs_read (stream_vfs->handle, buffer, n, &nread);
+
+ if (nread > 0 && result == GNOME_VFS_OK)
+ seekable->position += nread;
+ else if (nread == 0)
+ stream->eos = TRUE;
+
+ return nread;
+}
+
+static ssize_t
+stream_write (CamelStream *stream, const char *buffer, size_t n)
+{
+ CamelStreamVFS *stream_vfs = CAMEL_STREAM_VFS (stream);
+ CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
+ ssize_t nwritten = 0;
+ GnomeVFSResult result;
+
+ if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
+ n = MIN (seekable->bound_end - seekable->position, n);
+
+ result = gnome_vfs_write (stream_vfs->handle, buffer, n, &nwritten);
+
+ if (nwritten > 0 && result == GNOME_VFS_OK)
+ seekable->position += nwritten;
+
+ return nwritten;
+}
+
+/* static int */
+/* stream_flush (CamelStream *stream) */
+/* { */
+/* return fsync(((CamelStreamVFS *)stream)->handle); */
+/* } */
+
+static int
+stream_close (CamelStream *stream)
+{
+ GnomeVFSResult result;
+
+ result = gnome_vfs_close(((CamelStreamVFS *)stream)->handle);
+
+ if (result != GNOME_VFS_OK)
+ return -1;
+
+ ((CamelStreamVFS *)stream)->handle = NULL;
+ return 0;
+}
+
+static off_t
+stream_seek (CamelSeekableStream *stream, off_t offset, CamelStreamSeekPolicy policy)
+{
+ CamelStreamVFS *stream_vfs = CAMEL_STREAM_VFS (stream);
+ off_t real = 0;
+ GnomeVFSResult result;
+ GnomeVFSHandle *handle = stream_vfs->handle;
+
+ switch (policy) {
+ case CAMEL_STREAM_SET:
+ real = offset;
+ break;
+ case CAMEL_STREAM_CUR:
+ real = stream->position + offset;
+ break;
+ case CAMEL_STREAM_END:
+ if (stream->bound_end == CAMEL_STREAM_UNBOUND) {
+ result = gnome_vfs_seek (handle, GNOME_VFS_SEEK_END, offset);
+ if (result != GNOME_VFS_OK)
+ return -1;
+ gnome_vfs_tell (handle, &real);
+ if (real != -1) {
+ if (real<stream->bound_start)
+ real = stream->bound_start;
+ stream->position = real;
+ }
+ return real;
+ }
+ real = stream->bound_end + offset;
+ break;
+ }
+
+ if (stream->bound_end != CAMEL_STREAM_UNBOUND)
+ real = MIN (real, stream->bound_end);
+ real = MAX (real, stream->bound_start);
+
+ result = gnome_vfs_seek (handle, GNOME_VFS_SEEK_START, real);
+ if (result != GNOME_VFS_OK)
+ return -1;
+
+ if (real != stream->position && ((CamelStream *)stream)->eos)
+ ((CamelStream *)stream)->eos = FALSE;
+
+ stream->position = real;
+
+ return real;
+}
--- /dev/null 2006-04-26 01:42:37.000000000 +0530
+++ camel/camel-stream-vfs.h 2006-05-18 16:41:12.000000000 +0530
@@ -0,0 +1,72 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* camel-stream-vfs.h :stream based on unix filesystem */
+
+/*
+ * Author:
+ * Srinivasa Ragavan <sragavan@novell.com>
+ *
+ * Copyright 2006 Novell, Inc. (www.novell.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+
+#ifndef CAMEL_STREAM_VFS_H
+#define CAMEL_STREAM_VFS_H 1
+
+
+#ifdef __cplusplus
+extern "C" {
+#pragma }
+#endif /* __cplusplus */
+
+/* for open flags */
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <libgnomevfs/gnome-vfs.h>
+
+#include <camel/camel-seekable-stream.h>
+
+#define CAMEL_STREAM_VFS_TYPE (camel_stream_vfs_get_type ())
+#define CAMEL_STREAM_VFS(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_VFS_TYPE, CamelStreamVFS))
+#define CAMEL_STREAM_VFS_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_VFS_TYPE, CamelStreamVFSClass))
+#define CAMEL_IS_STREAM_VFS(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_VFS_TYPE))
+
+typedef struct _CamelStreamVFS CamelStreamVFS;
+
+struct _CamelStreamVFS {
+ CamelSeekableStream parent_object;
+
+ GnomeVFSHandle *handle;
+};
+
+typedef struct {
+ CamelSeekableStreamClass parent_class;
+
+} CamelStreamVFSClass;
+
+/* Standard Camel function */
+CamelType camel_stream_vfs_get_type (void);
+
+/* public methods */
+CamelStream * camel_stream_vfs_new_with_uri (const char *uri, int flags, mode_t mode);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* CAMEL_STREAM_VFS_H */

File diff suppressed because it is too large Load Diff

View File

@ -1,70 +0,0 @@
--- addressbook/libebook/libebook.pc.in
+++ addressbook/libebook/libebook.pc.in
@@ -2,6 +2,7 @@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+datarootdir=@datarootdir@
idldir=@idldir@
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
--- addressbook/libedata-book/libedata-book.pc.in
+++ addressbook/libedata-book/libedata-book.pc.in
@@ -2,6 +2,7 @@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+datarootdir=@datarootdir@
idldir=@idldir@
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
--- calendar/libecal/libecal.pc.in
+++ calendar/libecal/libecal.pc.in
@@ -2,6 +2,7 @@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+datarootdir=@datarootdir@
idldir=@idldir@
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
--- calendar/libedata-cal/libedata-cal.pc.in
+++ calendar/libedata-cal/libedata-cal.pc.in
@@ -2,6 +2,7 @@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+datarootdir=@datarootdir@
idldir=@idldir@
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
--- evolution-data-server.pc.in
+++ evolution-data-server.pc.in
@@ -4,6 +4,7 @@
includedir=@includedir@
privlibdir=@privlibdir@
extensiondir=@extensiondir@
+datarootdir=@datarootdir@
datadir=@datadir@
privdatadir=@privdatadir@
--- servers/exchange/storage/libexchange-storage.pc.in
+++ servers/exchange/storage/libexchange-storage.pc.in
@@ -2,6 +2,7 @@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+datarootdir=@datarootdir@
idldir=@idldir@
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@
--- servers/groupwise/libegroupwise.pc.in
+++ servers/groupwise/libegroupwise.pc.in
@@ -2,6 +2,7 @@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+datarootdir=@datarootdir@
idldir=@idldir@
IDL_INCLUDES=-I ${idldir} @IDL_INCLUDES@

View File

@ -1,11 +0,0 @@
--- configure.in.orig 2006-07-04 12:02:26.528729871 +0200
+++ configure.in 2006-07-04 13:33:54.123889885 +0200
@@ -310,7 +310,7 @@ int main(int argc, char **argv)
}],[
AC_DEFINE(HAVE_LKSTRFTIME, 1, [strftime supports use of l and k])
ac_cv_lkstrftime=yes
-],ac_cv_lkstrftime=no,ac_cv_lkstrftime=no])
+],ac_cv_lkstrftime=no,[ac_cv_lkstrftime=no])
AC_MSG_RESULT($ac_cv_lkstrftime)
PKG_PROG_PKG_CONFIG

View File

@ -1,8 +1,7 @@
Index: addressbook/backends/ldap/e-book-backend-ldap.c
===================================================================
--- addressbook/backends/ldap/e-book-backend-ldap.c.orig
+++ addressbook/backends/ldap/e-book-backend-ldap.c
@@ -2457,6 +2457,8 @@ e_book_backend_ldap_get_contact_list (EB
=== modified file 'addressbook/backends/ldap/e-book-backend-ldap.c'
--- addressbook/backends/ldap/e-book-backend-ldap.c 2007-12-18 16:36:30 +0000
+++ addressbook/backends/ldap/e-book-backend-ldap.c 2007-12-18 17:02:35 +0000
@@ -2463,6 +2463,8 @@
diff -= start.tv_sec * 1000 + start.tv_usec/1000;
printf ("e_book_backend_ldap_get_contact_list invoked contact_list_handler ");
@ -11,12 +10,12 @@ Index: addressbook/backends/ldap/e-book-backend-ldap.c
printf ("and took %ld.%03ld seconds\n", diff/1000, diff%1000);
}
}
Index: servers/exchange/storage/exchange-account.c
===================================================================
--- servers/exchange/storage/exchange-account.c.orig
+++ servers/exchange/storage/exchange-account.c
@@ -1983,6 +1983,9 @@ exchange_account_check_password_expiry (
E2kGlobalCatalogEntry *entry; /* This is never set before it's used! */
=== modified file 'servers/exchange/storage/exchange-account.c'
--- servers/exchange/storage/exchange-account.c 2007-12-18 16:36:30 +0000
+++ servers/exchange/storage/exchange-account.c 2007-12-18 17:02:35 +0000
@@ -2011,6 +2011,9 @@
E2kGlobalCatalogEntry *entry=NULL; /* This is never set before it's used! */
int max_pwd_age_days = -1;
+ /* Bull. The comment above is totally bogus. */
@ -25,3 +24,4 @@ Index: servers/exchange/storage/exchange-account.c
g_return_val_if_fail (EXCHANGE_IS_ACCOUNT (account), 0);
max_pwd_age_days = find_passwd_exp_period (account, entry);

View File

@ -1,25 +0,0 @@
Index: servers/exchange/storage/exchange-account.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-account.c,v
retrieving revision 1.30
diff -u -p -r1.30 exchange-account.c
--- servers/exchange/storage/exchange-account.c 6 Mar 2006 06:00:26 -0000 1.30
+++ servers/exchange/storage/exchange-account.c 19 Apr 2006 09:26:18 -0000
@@ -1000,7 +1000,7 @@ is_password_expired (ExchangeAccount *ac
result = e2k_kerberos_check_password (ac->username, domain,
ac->password);
- if (result != E2K_KERBEROS_OK ||
+ if (result != E2K_KERBEROS_OK &&
result != E2K_KERBEROS_PASSWORD_EXPIRED) {
/* try again with nt domain */
domain = ac->nt_domain;
@@ -1102,7 +1102,7 @@ exchange_account_set_password (ExchangeA
result = e2k_kerberos_change_password (account->priv->username, domain,
old_pass, new_pass);
- if (result != E2K_KERBEROS_OK || result != E2K_KERBEROS_PASSWORD_TOO_WEAK) {
+ if (result != E2K_KERBEROS_OK && result != E2K_KERBEROS_PASSWORD_TOO_WEAK) {
/* try with nt_domain */
domain = account->priv->nt_domain;
if (domain)

View File

@ -1,64 +0,0 @@
diff -up ../../602/build-eds/usr/src/packages/BUILD/evolution-data-server-1.6.0/po/it.po po/it.po
--- ../../602/build-eds/usr/src/packages/BUILD/evolution-data-server-1.6.0/po/it.po 2006-06-02 07:38:25.231210320 +0200
+++ po/it.po 2006-05-31 18:31:38.000000000 +0200
@@ -18,7 +18,7 @@ msgstr ""
"Project-Id-Version: evolution-data-server\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-04 06:53+0000\n"
-"PO-Revision-Date: 2006-05-17 14:47\n"
+"PO-Revision-Date: 2006-05-31 17:31\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
@@ -714,7 +714,7 @@ msgstr "Impossibile salvare i dati del c
#: ../calendar/backends/file/e-cal-backend-file.c:209
#,
msgid "Can't save calendar data: "
-msgstr "Can't save calendar data: "
+msgstr "Impossibile salvare i dati del calendario:"
#: ../calendar/backends/groupwise/e-cal-backend-groupwise-utils.c:872
#: ../camel/providers/groupwise/camel-groupwise-folder.c:1582
@@ -2517,7 +2517,7 @@ msgstr "Certificato non corretto da %s:\
#: ../camel/camel-tcp-stream-ssl.c:896
#, c-format
msgid "SSL Certificate check for %s:\n\n%s\n\nDo you wish to accept?"
-msgstr "Controllo certificato SSL per %s:\n\n%s\n\nSi desidera accettare?"
+msgstr "Controllo certificato SSL per %s:\n\n%s\nSi desidera accettare?"
#: ../camel/camel-tcp-stream-ssl.c:940
#, c-format
@@ -2642,7 +2642,7 @@ msgstr "Impossibile caricare il sommario
#: ../camel/providers/groupwise/camel-groupwise-folder.c:966
msgid "Trash Folder Full. Please Empty."
-msgstr "Trash Folder Full. Please Empty."
+msgstr "La cartella del cestino è piena. Svuotarla."
# LF
#: ../camel/providers/groupwise/camel-groupwise-folder.c:1129
@@ -2767,7 +2767,7 @@ msgstr "Non è stata inserita la passwor
#: ../camel/providers/groupwise/camel-groupwise-store.c:226
#,
msgid "Unable to authenticate to GroupWise server. "
-msgstr "Unable to authenticate to GroupWise server. "
+msgstr "Impossibile autenticare il server Groupwise."
#: ../camel/providers/groupwise/camel-groupwise-store.c:304
msgid "Some features may not work correctly with your current server version"
@@ -4954,13 +4954,13 @@ msgstr "Eli_mina %s"
#: ../libedataserverui/e-passwords.c:472
#,
msgid "_Remember this passphrase"
-msgstr "_Remember this passphrase"
+msgstr "_Memorizza questa passphrase"
# LF
#: ../libedataserverui/e-passwords.c:473
#,
msgid "_Remember this passphrase for the remainder of this session"
-msgstr "_Remember this passphrase for the remainder of this session"
+msgstr "_Memorizza la passphrase per l'intera sessione"
# LF
#: ../libedataserverui/e-passwords.c:476

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,20 @@
Index: calendar/backends/contacts/e-cal-backend-contacts.c
===================================================================
--- calendar/backends/contacts/e-cal-backend-contacts.c.orig
+++ calendar/backends/contacts/e-cal-backend-contacts.c
@@ -386,7 +386,7 @@ contacts_removed_cb (EBookView *book_vie
=== modified file 'calendar/backends/contacts/e-cal-backend-contacts.c'
--- calendar/backends/contacts/e-cal-backend-contacts.c 2007-12-18 16:36:30 +0000
+++ calendar/backends/contacts/e-cal-backend-contacts.c 2007-12-18 16:41:03 +0000
@@ -389,7 +389,7 @@
static struct icaltimetype
cdate_to_icaltime (EContactDate *cdate)
{
- struct icaltimetype ret;
+ struct icaltimetype ret = icaltime_null_time();
/*FIXME: this is a really _ugly_ (temporary) hack
* since several functions are still depending on the epoch,
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
===================================================================
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.h.orig
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
@@ -44,6 +44,7 @@ G_BEGIN_DECLS
ret.year = cdate->year;
ret.month = cdate->month;
=== modified file 'calendar/backends/groupwise/e-cal-backend-groupwise-utils.h'
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.h 2007-12-18 16:36:30 +0000
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.h 2007-12-18 16:41:03 +0000
@@ -44,6 +44,7 @@
* Items management
*/
EGwItem *e_gw_item_new_from_cal_component (const char *container, ECalBackendGroupwise *cbgw, ECalComponent *comp);
@ -23,11 +22,11 @@ Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
ECalComponent *e_gw_item_to_cal_component (EGwItem *item, ECalBackendGroupwise *cbgw);
void e_gw_item_set_changes (EGwItem *item, EGwItem *cached_item);
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
--- camel/providers/groupwise/camel-groupwise-folder.c.orig
+++ camel/providers/groupwise/camel-groupwise-folder.c
@@ -2050,7 +2050,7 @@ groupwise_transfer_messages_to (CamelFol
=== modified file 'camel/providers/groupwise/camel-groupwise-folder.c'
--- camel/providers/groupwise/camel-groupwise-folder.c 2007-12-18 16:36:30 +0000
+++ camel/providers/groupwise/camel-groupwise-folder.c 2007-12-18 16:41:03 +0000
@@ -2072,7 +2072,7 @@
CamelGroupwiseStore *gw_store= CAMEL_GROUPWISE_STORE(source->parent_store);
CamelOfflineStore *offline = (CamelOfflineStore *) destination->parent_store;
CamelGroupwiseStorePrivate *priv = gw_store->priv;
@ -36,59 +35,59 @@ Index: camel/providers/groupwise/camel-groupwise-folder.c
EGwConnection *cnc;
CamelFolderChangeInfo *changes = NULL;
Index: camel/providers/imap/camel-imap-store.c
===================================================================
--- camel/providers/imap/camel-imap-store.c.orig
+++ camel/providers/imap/camel-imap-store.c
@@ -701,6 +701,9 @@ connect_to_server (CamelService *service
=== modified file 'camel/providers/imap/camel-imap-store.c'
--- camel/providers/imap/camel-imap-store.c 2007-12-18 16:36:30 +0000
+++ camel/providers/imap/camel-imap-store.c 2007-12-18 16:41:03 +0000
@@ -702,6 +702,9 @@
}
#ifdef HAVE_SSL
+ /* as soon as we send a STARTTLS command, all hope is lost of a clean QUIT if problems arise */
+ clean_quit = FALSE;
+
if (!(store->capabilities & IMAP_CAPABILITY_STARTTLS)) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
_("Failed to connect to IMAP server %s in secure mode: %s"),
@@ -709,9 +712,6 @@ connect_to_server (CamelService *service
_("Failed to connect to IMAP server %s in secure mode: %s"),
@@ -710,9 +713,6 @@
goto exception;
}
- /* as soon as we send a STARTTLS command, all hope is lost of a clean QUIT if problems arise */
- clean_quit = FALSE;
-
-
response = camel_imap_command (store, NULL, ex, "STARTTLS");
if (!response) {
camel_object_unref (store->istream);
Index: camel/providers/pop3/camel-pop3-store.c
===================================================================
--- camel/providers/pop3/camel-pop3-store.c.orig
+++ camel/providers/pop3/camel-pop3-store.c
@@ -217,6 +217,9 @@ connect_to_server (CamelService *service
=== modified file 'camel/providers/pop3/camel-pop3-store.c'
--- camel/providers/pop3/camel-pop3-store.c 2007-12-18 16:36:30 +0000
+++ camel/providers/pop3/camel-pop3-store.c 2007-12-18 16:41:03 +0000
@@ -219,6 +219,9 @@
}
#ifdef HAVE_SSL
+ /* as soon as we send a STLS command, all hope is lost of a clean QUIT if problems arise */
+ clean_quit = FALSE;
+
if (!(store->engine->capa & CAMEL_POP3_CAP_STLS)) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
_("Failed to connect to POP server %s in secure mode: %s"),
@@ -224,9 +227,6 @@ connect_to_server (CamelService *service
_("Failed to connect to POP server %s in secure mode: %s"),
@@ -226,9 +229,6 @@
goto stls_exception;
}
- /* as soon as we send a STLS command, all hope is lost of a clean QUIT if problems arise */
- clean_quit = FALSE;
-
-
pc = camel_pop3_engine_command_new (store->engine, 0, NULL, NULL, "STLS\r\n");
while (camel_pop3_engine_iterate (store->engine, NULL) > 0)
;
Index: libdb/dbm/dbm.c
===================================================================
--- libdb/dbm/dbm.c.orig
+++ libdb/dbm/dbm.c
@@ -128,7 +128,8 @@ __db_dbm_fetch(key)
=== modified file 'libdb/dbm/dbm.c'
--- libdb/dbm/dbm.c 2007-12-18 16:36:30 +0000
+++ libdb/dbm/dbm.c 2007-12-18 16:41:03 +0000
@@ -128,7 +128,8 @@
if (__cur_db == NULL) {
__db_no_open();
@ -98,7 +97,7 @@ Index: libdb/dbm/dbm.c
return (item);
}
return (dbm_fetch(__cur_db, key));
@@ -141,7 +142,8 @@ __db_dbm_firstkey()
@@ -141,7 +142,8 @@
if (__cur_db == NULL) {
__db_no_open();
@ -108,7 +107,7 @@ Index: libdb/dbm/dbm.c
return (item);
}
return (dbm_firstkey(__cur_db));
@@ -157,7 +159,8 @@ __db_dbm_nextkey(key)
@@ -157,7 +159,8 @@
if (__cur_db == NULL) {
__db_no_open();
@ -118,3 +117,4 @@ Index: libdb/dbm/dbm.c
return (item);
}
return (dbm_nextkey(__cur_db));

View File

@ -1,65 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.135
diff -u -p -r1.135 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 6 Jun 2006 20:07:47 -0000 1.135
+++ camel/providers/groupwise/camel-groupwise-folder.c 9 Jun 2006 09:41:02 -0000
@@ -374,9 +374,17 @@ groupwise_msg_set_recipient_list (CamelM
}
if (org) {
+ if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
+ int i;
+ for (i = 0; org->display_name[i] != '<' &&
+ org->display_name[i] != '\0';
+ i++);
+
+ org->display_name[i] = '\0';
+ }
if (org->display_name && org->email)
- ha=camel_header_address_new_name(org->display_name,org->email);
- else
+ ha=camel_header_address_new_name(org->display_name, org->email);
+ else if (org->display_name)
ha=camel_header_address_new_group(org->display_name);
subs_email=camel_header_address_list_encode(ha);
@@ -1225,9 +1233,17 @@ gw_update_cache (CamelFolder *folder, GL
org = e_gw_item_get_organizer (item);
if (org) {
GString *str;
+ int i;
str = g_string_new ("");
- if (org->display_name && org->display_name[0])
+ if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
+ for (i = 0; org->display_name[i] != '<' &&
+ org->display_name[i] != '\0';
+ i++);
+
+ org->display_name[i] = '\0';
str = g_string_append (str, org->display_name);
+ str = g_string_append (str, " ");
+ }
if (org->email && org->email[0]) {
g_string_append (str, "<");
str = g_string_append (str, org->email);
@@ -1428,9 +1444,17 @@ gw_update_summary ( CamelFolder *folder,
org = e_gw_item_get_organizer (item);
if (org) {
GString *str;
+ int i;
str = g_string_new ("");
- if (org->display_name && org->display_name[0])
+ if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
+ for (i = 0; org->display_name[i] != '<' &&
+ org->display_name[i] != '\0';
+ i++);
+
+ org->display_name[i] = '\0';
str = g_string_append (str, org->display_name);
+ str = g_string_append (str, " ");
+ }
if (org->email && org->email[0]) {
g_string_append (str, "<");
str = g_string_append (str, org->email);

View File

@ -1,16 +0,0 @@
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.132
diff -u -p -r1.132 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 28 Apr 2006 13:21:23 -0000 1.132
+++ camel/providers/groupwise/camel-groupwise-folder.c 3 May 2006 05:21:39 -0000
@@ -963,6 +963,8 @@ groupwise_refresh_folder(CamelFolder *fo
if (status != E_GW_CONNECTION_STATUS_OK) {
if (status ==E_GW_CONNECTION_STATUS_OTHER) {
g_warning ("Trash full....Empty Trash!!!!\n");
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Trash Folder Full. Please Empty."));
+ goto end1;
/*groupwise_expunge (folder, ex);*/
} else
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:854435b58756b365b978f1433bee026d4f5f2973e0c1c2ea279cd2c7c0e8f5f3
size 7463329

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2340a9c2457ca537fe0993a878ad025e46775173ec204a3fd82c78d4e6320fb3
size 7432892

View File

@ -1,7 +1,8 @@
--- configure.in
+++ configure.in
@@ -295,6 +295,8 @@
],ac_cv_lkstrftime=no,ac_cv_lkstrftime=no])
=== modified file 'configure.in'
--- configure.in 2007-12-18 16:36:30 +0000
+++ configure.in 2007-12-18 16:37:20 +0000
@@ -396,6 +396,8 @@
])
AC_MSG_RESULT($ac_cv_lkstrftime)
+PKG_PROG_PKG_CONFIG
@ -9,3 +10,4 @@
dnl ********************************************************************************
dnl security extension support (SSL and S/MIME)
dnl

View File

@ -1,7 +1,6 @@
Index: libedataserverui/e-name-selector-dialog.c
===================================================================
--- libedataserverui/e-name-selector-dialog.c.orig
+++ libedataserverui/e-name-selector-dialog.c
=== modified file 'libedataserverui/e-name-selector-dialog.c'
--- libedataserverui/e-name-selector-dialog.c 2007-12-18 16:36:30 +0000
+++ libedataserverui/e-name-selector-dialog.c 2007-12-18 16:37:45 +0000
@@ -31,6 +31,8 @@
#include <gtk/gtklabel.h>
#include <gtk/gtkscrolledwindow.h>
@ -9,5 +8,6 @@ Index: libedataserverui/e-name-selector-dialog.c
+#include <gtk/gtkcellrenderertext.h>
+#include <glib/gstrfuncs.h>
#include <glib/gi18n-lib.h>
#include <libedataserverui/e-source-option-menu.h>
#include <libedataserverui/e-source-combo-box.h>
#include <libedataserverui/e-destination-store.h>

View File

@ -1,3 +1,22 @@
-------------------------------------------------------------------
Tue Dec 18 13:06:54 CST 2007 - maw@suse.de
- Update to version 2.21.4:
+ The large version bump is due to evolution and related packages
synchronizing their version numbers with those of GNOME
+ Bugs (bugzilla.gnome.org, except where otherwise indicated)
fixed: #322917, #336074, #339510, #462593, #466499, #486126,
#487687, #501548, #501622, #501969, #502866, #308815, #376425,
#415817, #461979, #492426, #494314, #318842, #345135, #359267,
#430420, #460649, #487229, #488156, #492130, #494304,
bnc#203480, #231178, #271777, #417999, #420167, #469657,
#474000, #475487, #475493, #475494, #478404, #483301, #487270,
#488173, and #488351
+ Support for Google Calendar
+ Updated translations
+ Protect against a NULL subject string
- Remove old patches, and refresh and renumber the remaining ones.
-------------------------------------------------------------------
Wed Dec 5 01:21:04 CET 2007 - maw@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package evolution-data-server (Version 1.12.0)
# spec file for package evolution-data-server (Version 2.21.4)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@ -16,102 +16,33 @@ License: GPL v2 or later
Group: Development/Libraries/GNOME
AutoReqProv: on
Summary: Evolution Data Server
Version: 1.12.0
Release: 37
Source: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/1.11/%{name}-%{version}.tar.bz2
#Patch3: evolution-data-server-gcc4.patch
Patch5: evolution-data-server-configure.patch
Patch6: nss-nspr.patch
Patch7: evolution-data-server-decl.patch
Patch8: eds-warnings.patch
# Patch9: evolution-fix-function-declarations.patch
# FIXME: After upgrade, use patch# - 100
#Patch108: eds-1.5.5-warnings.patch
#Patch10: keyring-integration.patch
Patch11: backend-timeout-fix.patch
Patch12: bnc-156823-newly-configured-gw-dont-work.patch
Patch13: bnc-156584-evo-wont-shutdown.patch
Patch14: beagle-meta-summary.patch
Patch15: bnc-137357-newly-configured-gw-dont-work.patch
Patch16: bnc-152355-mails-doesnt-show-gw.patch
Patch17: bnc-157323-messages-deleted-from-gw-remain-in-evo.patch
Patch18: bnc-153522-evolution-doesnt-update-message-status.patch
Patch19: bnc-158093-sent-folder-have-to-not-from.patch
Patch20: bnc-138047-password-passphrase-msg-inconsistency.patch
Patch21: bnc-153522-evo-doesnt-update-msg-status-workaround.patch
Patch22: bnc-152062-evolution-wont-show-attachment.patch
Patch23: bgo-272307-evolution-clobbers-mail-address.patch
Patch24: bgo-331146-eds-crash-at-startup.patch
Patch25: bgo-334807-eds-crasher.patch
Patch26: bgo-323275-eds-crash-at-startup.patch
Patch27: bgo-334000-unexpected-dialog-creating-appt.patch
Patch28: patch-for-random-eds-addr-crashes.patch
Patch29: camel-partha-gw-fixes.patch
Patch30: bnc-158112-send-receive-dlg-takes-time.patch
Patch31: crash-while-browsing-through-mails.patch
Patch32: bnc-158107-no-notification-canceled-mtgs.patch
Patch33: bnc-160147-cant-delete-created-calendar-accounts.patch
Patch34: bnc-161000-junk-mail-dont-work.patch
Patch35: gw-proxy-issues.patch
Patch36: bnc-161290-eds-crashed-forwarding-mail.patch
Patch37: bnc-162005-e-d-s-crash-deleting-recur-appt.patch
Patch38: bnc-163664-eds-crashes-on-invalid-utf8-contacts.patch
# Looks upstreamed to me.
Patch39: bnc-160915-evolution-crash-clickng-goto-cal-view.patch
Patch40: bnc-164367-gw-attachments-appts-throw-error.patch
Patch41: bnc-163982-system-hang-with-126-error-popups.patch
Patch42: bnc-164676-eds-stuck-tight-loop.patch
Patch43: bnc-152070-eds-crash.patch
Patch44: bnc-164140-eds-crash-evolution--offline.patch
#Patch45: gw-force-use-imap.patch
Patch46: bnc-164323-random-mark-unread.patch
Patch47: 167566-camel-groupwise-summary.patch
Patch48: 167640-camel-groupwise-store.patch
Patch49: bnc-159934-eds-CPU-spikes.patch
Patch50: eds-kerb-check.diff
Patch51: bnc-165714-eds-delegate-multiple-events.diff
Patch52: bgo-310433-eds-deny-rename-stdfolders.diff
Patch53: bgo-329371-eds-fix-full-username-email-format.patch
Patch54: bnc-164323-random-mark-unread-updated.patch
Patch55: bulk-delete.patch
Patch56: imap-perf.patch
Patch57: nameselectorlist-keychange.diff
Patch58: imap4-removal.diff
Patch59: bgo-321797.patch
Patch60: bgo-315976-INBOX-not-shown-when-override-namespace.patch
Patch61: bnc-167638.patch
Patch62: empty-trash-notify.patch
Patch63: bnc-169034-eds-pub-folder-download.diff
Patch64: bnc-169997-eds-infinite-loop.diff
Patch65: bnc-173454.patch
Patch66: gw-trash-fix.diff
Patch67: imap-locking.patch
Patch68: bnc-177394.patch
Patch69: eds-updated-translations.diff
Patch70: camel-vfs-stream.diff
Patch71: bnc-174255-honour-system-proxy-settings.patch
Patch72: bnc-176277-2.patch
Patch73: german-translation-eds.diff
Patch74: bnc-181906-eds-ex-crash.diff
Patch75: eds-translations-updated.diff
Patch76: bnc-179350.patch
Patch77: bnc-170052-eds-crash.patch
Patch78: email-appears-twice.patch
Patch79: bnc-183819-evo-crashed-closing-offline.patch
Patch80: bnc-187529-calendar-cache-population.patch
Patch81: e-d-s-configure-break-fix.patch
Patch82: fwd-mail.patch
Patch83: datarootdir.diff
Patch84: cal-attachment-filename-handling.patch
Patch85: bnc-167330-default-GW-alarms.patch
Patch86: eds-compiler-warning.patch
Patch89: bgo-369168-buffer-overrun.patch
Patch90: evolution-data-server-1.11.5-cert-auth-complete.patch
Patch91: bnc-304835-ex-crash-after-restart.patch
Patch92: bnc-307861-calendar-auth.diff
Version: 2.21.4
Release: 1
Source0: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/1.11/%{name}-%{version}.tar.bz2
Patch0: evolution-data-server-configure.patch
Patch1: evolution-data-server-decl.patch
Patch2: eds-warnings.patch
Patch3: bnc-164367-gw-attachments-appts-throw-error.patch
Patch4: bnc-163982-system-hang-with-126-error-popups.patch
Patch5: bnc-152070-eds-crash.patch
Patch6: bnc-164140-eds-crash-evolution--offline.patch
Patch7: bnc-167638.patch
Patch8: bnc-174255-honour-system-proxy-settings.patch
Patch9: bnc-183819-evo-crashed-closing-offline.patch
Patch10: eds-compiler-warning.patch
Patch11: evolution-data-server-1.11.5-cert-auth-complete.patch
Patch12: bnc-304835-ex-crash-after-restart.patch
Patch13: bnc-307861-calendar-auth.diff
# Change patch below if we move away from /opt/gnome
# It avoids a build dependency on libgnomeui to speed up bootstrap
Patch99: libgnomeui-dep.patch
# The following has been reported upstream (with a patch) and should be
# fixed in the next release:
# I: Program is using uninitialized variables.
# Note the difference between "is used" and "may be used"
# W: evolution-data-server uninitialized-variable e-book-backend-groupwise.c: 2425
# See:
# http://bugzilla.gnome.org/show_bug.cgi?id=504346
Url: http://www.gnome.org
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: libsoup >= 2.2.6 mozilla-nss
@ -127,7 +58,7 @@ and calendar in the GNOME Desktop.
Summary: Evolution Data Server Development Files
Group: Development/Libraries/GNOME
Requires: evolution-data-server = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: libsoup-devel libbonobo-devel libgnome-devel gnome-vfs2-devel libxml2-devel orbit2-devel openldap2-devel libglade2-devel
Requires: libgpg-error-devel libsoup-devel libbonobo-devel libgnome-devel gnome-vfs2-devel libxml2-devel orbit2-devel openldap2-devel libglade2-devel
Requires: gtk2-devel gconf2-devel glib2-devel gnome-keyring-devel gnome-certauth-devel
%if %suse_version >= 930
Requires: krb5-devel
@ -159,92 +90,21 @@ documentation.
%lang_package
%prep
%setup -q
#%patch3
%patch0
%patch1
%patch2
%patch3
%patch4
%patch5
#%patch6
%patch6
%patch7
#%patch108
%patch8
# %patch9
#%patch10
#%patch11
#%patch12
#%patch13
#%patch14
#%patch15
#%patch16
#%patch17
#%patch18
#%patch19
#%patch20
#%patch21
#%patch22
#%patch23
#%patch24
#%patch25
#%patch26
#%patch27
#%patch28 -p0
#%patch29
#%patch30
#%patch31
#%patch32
#%patch33
#%patch34
#%patch35
#%patch36
#%patch37
#%patch38
# %patch39
%patch40
%patch41
#%patch42
%patch43
%patch44
#%patch45
#%patch46
#%patch47
#%patch48
#%patch49
#%patch50
#%patch51
#%patch52
#%patch53
#%patch54
#%patch55
#%patch56
#%patch57
#%patch58
#%patch59
#%patch60
%patch61
#%patch62
#%patch63
#%patch64
#%patch65
#%patch66
#%patch67
#%patch68
#%patch69
#%patch70
%patch71
#%patch72
#%patch73
#%patch74
#%patch75
#%patch77
#%patch78
%patch79
#%patch80
#%patch81
#%patch82
#%patch83
%patch86
#%patch89
%patch90
%patch91
%patch92
%patch99 -p1
%patch9
%patch10
%patch11
%patch12
%patch13
%patch99
%build
libtoolize --force --copy
@ -266,7 +126,7 @@ make %{?jobs:-j%jobs}
%install
make DESTDIR=$RPM_BUILD_ROOT install
%find_lang evolution-data-server-1.12
%find_lang evolution-data-server-2.22
rm $RPM_BUILD_ROOT%{_libdir}/*/*/*.*a
%fdupes $RPM_BUILD_ROOT
@ -280,19 +140,19 @@ rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc README COPYING ChangeLog NEWS TODO AUTHORS
%{_datadir}/evolution-data-server-1.12
%{_datadir}/evolution-data-server-2.22
%{_datadir}/idl/evolution-data-server-1.2
%{_datadir}/pixmaps/evolution-data-server
%{_libdir}/*.so.*
%{_libdir}/bonobo/servers/*
%{_libdir}/evolution-data-server-1.2
%{_prefix}/lib/evolution-data-server
%{_libdir}/evolution-data-server-1.2
%files lang -f evolution-data-server-1.12.lang
%files lang -f evolution-data-server-2.22.lang
%files devel
%defattr(-, root, root)
%{_includedir}/evolution-data-server-1.12
%{_includedir}/evolution-data-server-2.22
%{_libdir}/*.so
%{_libdir}/*.*a
%{_libdir}/pkgconfig/*.pc
@ -302,6 +162,22 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/gtk-doc/html/*
%changelog
* Tue Dec 18 2007 - maw@suse.de
- Update to version 2.21.4:
+ The large version bump is due to evolution and related packages
synchronizing their version numbers with those of GNOME
+ Bugs (bugzilla.gnome.org, except where otherwise indicated)
fixed: #322917, #336074, #339510, #462593, #466499, #486126,
[#487687], #501548, #501622, #501969, #502866, #308815, #376425,
[#415817], #461979, #492426, #494314, #318842, #345135, #359267,
[#430420], #460649, #487229, #488156, #492130, #494304,
bnc#203480, #231178, #271777, #417999, #420167, #469657,
[#474000], #475487, #475493, #475494, #478404, #483301, #487270,
[#488173], and #488351
+ Support for Google Calendar
+ Updated translations
+ Protect against a NULL subject string
- Remove old patches, and refresh and renumber the remaining ones.
* Wed Dec 05 2007 - maw@suse.de
- Don't require openldap2 to build.
* Thu Oct 11 2007 - sbrabec@suse.cz

View File

@ -1,63 +0,0 @@
Index: servers/groupwise/e-gw-item.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-item.c,v
retrieving revision 1.100
diff -u -p -r1.100 e-gw-item.c
--- servers/groupwise/e-gw-item.c 13 Jun 2006 07:15:37 -0000 1.100
+++ servers/groupwise/e-gw-item.c 13 Jun 2006 10:54:23 -0000
@@ -72,6 +72,7 @@ struct _EGwItemPrivate {
char *msg_body_id;
int item_status;
/*Attachments*/
+ gboolean has_attachment;
GSList *attach_list ;
/*linkInfo for replies*/
EGwItemLinkInfo *link_info;
@@ -525,6 +526,7 @@ e_gw_item_init (EGwItem *item, EGwItemCl
priv->self_status = 0;
priv->link_info = NULL;
priv->msg_body_id = NULL;
+ priv->has_attachment = FALSE;
item->priv = priv;
@@ -1795,6 +1797,9 @@ e_gw_item_new_from_soap_parameter (const
} else if (!g_ascii_strcasecmp (name, "size")) {
item->priv->size = soup_soap_parameter_get_int_value (child);
+ } else if (!g_ascii_strcasecmp (name, "hasAttachment")) {
+ item->priv->has_attachment = soup_soap_parameter_get_int_value (child);
+
} else if (!g_ascii_strcasecmp (name, "options")) {
SoupSoapParameter *subparam;
char *value = NULL;
@@ -2065,6 +2070,14 @@ e_gw_item_get_mail_size (EGwItem *item)
return item->priv->size;
}
+gboolean
+e_gw_item_has_attachment (EGwItem *item)
+{
+ g_return_val_if_fail (E_IS_GW_ITEM (item), 0);
+
+ return item->priv->has_attachment;
+}
+
char *
e_gw_item_get_creation_date (EGwItem *item)
{
Index: servers/groupwise/e-gw-item.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-item.h,v
retrieving revision 1.40
diff -u -p -r1.40 e-gw-item.h
--- servers/groupwise/e-gw-item.h 6 Dec 2005 10:05:57 -0000 1.40
+++ servers/groupwise/e-gw-item.h 13 Jun 2006 10:54:23 -0000
@@ -298,6 +298,7 @@ void e_gw_item_set_source (EGwItem *item
int e_gw_item_get_trigger (EGwItem *item);
void e_gw_item_set_trigger (EGwItem *item, int trigger);
+gboolean e_gw_item_has_attachment (EGwItem *item);
typedef struct {
char *email;

View File

@ -1,53 +0,0 @@
--- /root/sragavan/602/build-eds/usr/src/packages/BUILD/evolution-data-server-1.6.0/po/de.po 2006-06-02 06:39:20.962276877 +0200
+++ po/de.po 2006-05-25 12:28:10.000000000 +0200
@@ -12,7 +12,7 @@
"Project-Id-Version: evolution-data-server\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-04 06:53+0000\n"
-"PO-Revision-Date: 2006-05-17 11:25\n"
+"PO-Revision-Date: 2006-05-25 11:28\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
@@ -656,7 +656,7 @@
#: ../calendar/backends/file/e-cal-backend-file.c:209
#,
msgid "Can't save calendar data: "
-msgstr "Can't save calendar data: "
+msgstr "Kalenderdaten können nicht gespeichert werden: "
#: ../calendar/backends/groupwise/e-cal-backend-groupwise-utils.c:872
#: ../camel/providers/groupwise/camel-groupwise-folder.c:1582
@@ -2485,7 +2485,7 @@
#: ../camel/providers/groupwise/camel-groupwise-folder.c:966
msgid "Trash Folder Full. Please Empty."
-msgstr "Trash Folder Full. Please Empty."
+msgstr "Müllordner voll. Bitte leeren."
#: ../camel/providers/groupwise/camel-groupwise-folder.c:1129
#: ../camel/providers/groupwise/camel-groupwise-store.c:632
@@ -2605,7 +2605,7 @@
#: ../camel/providers/groupwise/camel-groupwise-store.c:226
#,
msgid "Unable to authenticate to GroupWise server. "
-msgstr "Unable to authenticate to GroupWise server. "
+msgstr "Authentifizierung beim GroupWise-Server nicht möglich. "
#: ../camel/providers/groupwise/camel-groupwise-store.c:304
msgid "Some features may not work correctly with your current server version"
@@ -4662,12 +4662,12 @@
#: ../libedataserverui/e-passwords.c:472
#,
msgid "_Remember this passphrase"
-msgstr "_Remember this passphrase"
+msgstr "_An diesen Passwortsatz erinnern"
#: ../libedataserverui/e-passwords.c:473
#,
msgid "_Remember this passphrase for the remainder of this session"
-msgstr "_Remember this passphrase for the remainder of this session"
+msgstr "_Für den Rest dieser Sitzung an diesen Passwortsatz erinnern"
#: ../libedataserverui/e-passwords.c:476
msgid "_Remember this password"

View File

@ -1,141 +0,0 @@
--- camel/providers/groupwise/camel-groupwise-folder.c.orig 2006-04-04 17:00:02.054008863 +0200
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006-04-04 17:00:05.509122536 +0200
@@ -914,7 +914,7 @@ groupwise_refresh_folder(CamelFolder *fo
if (!camel_groupwise_store_connected (gw_store, ex))
goto end1;
- if (!strcmp (folder->full_name, "Trash") || is_proxy) {
+ if (!strcmp (folder->full_name, "Trash")) {
status = e_gw_connection_get_items (cnc, container_id, "peek recipient distribution created delivered attachments subject status size", NULL, &list);
if (status != E_GW_CONNECTION_STATUS_OK) {
if (status ==E_GW_CONNECTION_STATUS_OTHER) {
@@ -939,71 +939,73 @@ groupwise_refresh_folder(CamelFolder *fo
/*Get the New Items*/
- status = e_gw_connection_get_quick_messages (cnc, container_id,
- "peek id",
- &t_str, "New", NULL, NULL, -1, &slist);
- if (status != E_GW_CONNECTION_STATUS_OK) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
- goto end2;
- }
+ if (!is_proxy) {
+ status = e_gw_connection_get_quick_messages (cnc, container_id,
+ "peek id",
+ &t_str, "New", NULL, NULL, -1, &slist);
+ if (status != E_GW_CONNECTION_STATUS_OK) {
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
+ goto end2;
+ }
- /*
- * The value in t_str is the one that has to be used for the next set of calls.
- * so store this value in the summary.
- */
- if (summary->time_string)
- g_free (summary->time_string);
+ /*
+ * The value in t_str is the one that has to be used for the next set of calls.
+ * so store this value in the summary.
+ */
+ if (summary->time_string)
+ g_free (summary->time_string);
- summary->time_string = g_strdup (t_str);
- g_free (t_str);
- t_str = NULL;
+ summary->time_string = g_strdup (t_str);
+ g_free (t_str);
+ t_str = NULL;
- /*
- for ( sl = slist ; sl != NULL; sl = sl->next)
- list = g_list_append (list, sl->data);*/
+ /*
+ for ( sl = slist ; sl != NULL; sl = sl->next)
+ list = g_list_append (list, sl->data);*/
- if (slist && g_slist_length(slist) != 0)
- check_all = TRUE;
+ if (slist && g_slist_length(slist) != 0)
+ check_all = TRUE;
- g_slist_free (slist);
- slist = NULL;
+ g_slist_free (slist);
+ slist = NULL;
- t_str = g_strdup (time_string);
+ t_str = g_strdup (time_string);
- /*Get those items which have been modifed*/
+ /*Get those items which have been modifed*/
- status = e_gw_connection_get_quick_messages (cnc, container_id,
- "peek id",
- &t_str, "Modified", NULL, NULL, -1, &slist);
+ status = e_gw_connection_get_quick_messages (cnc, container_id,
+ "peek id",
+ &t_str, "Modified", NULL, NULL, -1, &slist);
- if (status != E_GW_CONNECTION_STATUS_OK) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
- goto end3;
- }
+ if (status != E_GW_CONNECTION_STATUS_OK) {
+ camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
+ goto end3;
+ }
- /* The storing of time-stamp to summary code below should be commented if the
- above commented code is uncommented */
+ /* The storing of time-stamp to summary code below should be commented if the
+ above commented code is uncommented */
- /* if (summary->time_string)
- g_free (summary->time_string);
+ /* if (summary->time_string)
+ g_free (summary->time_string);
- summary->time_string = g_strdup (t_str);
+ summary->time_string = g_strdup (t_str);
- g_free (t_str), t_str = NULL;*/
+ g_free (t_str), t_str = NULL;*/
- for ( sl = slist ; sl != NULL; sl = sl->next)
- list = g_list_prepend (list, sl->data);
+ for ( sl = slist ; sl != NULL; sl = sl->next)
+ list = g_list_prepend (list, sl->data);
- g_slist_free (slist);
- slist = NULL;
+ g_slist_free (slist);
+ slist = NULL;
- if (gw_store->current_folder != folder) {
- gw_store->current_folder = folder;
- }
+ if (gw_store->current_folder != folder) {
+ gw_store->current_folder = folder;
+ }
- if (list) {
- gw_update_cache (folder, list, ex, FALSE);
+ if (list) {
+ gw_update_cache (folder, list, ex, FALSE);
+ }
}
@@ -1017,7 +1019,7 @@ groupwise_refresh_folder(CamelFolder *fo
* this folder, and update the summary.
*/
/*create a new session thread for the update all operation*/
- if (check_all) {
+ if (check_all || is_proxy) {
msg = camel_session_thread_msg_new (session, &update_ops, sizeof(*msg));
msg->cnc = cnc;
msg->t_str = g_strdup (time_string);

View File

@ -1,41 +0,0 @@
Index: camel/providers/imap/camel-imap-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.c,v
retrieving revision 1.359
retrieving revision 1.360
diff -u -r1.359 -r1.360
--- camel/providers/imap/camel-imap-folder.c 2006/04/21 09:15:50 1.359
+++ camel/providers/imap/camel-imap-folder.c 2006/05/10 08:49:18 1.360
@@ -2322,7 +2322,7 @@
}
-#define CAMEL_MESSAGE_INFO_HEADERS "DATE FROM TO CC SUBJECT REFERENCES IN-REPLY-TO MESSAGE-ID MIME-VERSION CONTENT-TYPE"
+#define CAMEL_MESSAGE_INFO_HEADERS "DATE FROM TO CC SUBJECT REFERENCES IN-REPLY-TO MESSAGE-ID MIME-VERSION CONTENT-TYPE "
/* FIXME: this needs to be kept in sync with camel-mime-utils.c's list
of mailing-list headers and so might be best if this were
Index: camel/providers/groupwise/camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.133
diff -u -p -r1.133 camel-groupwise-folder.c
--- camel/providers/groupwise/camel-groupwise-folder.c 17 May 2006 08:48:19 -0000 1.133
+++ camel/providers/groupwise/camel-groupwise-folder.c 17 May 2006 08:52:17 -0000
@@ -959,6 +959,7 @@ groupwise_refresh_folder(CamelFolder *fo
goto end1;
if (!strcmp (folder->full_name, "Trash")) {
+#if 0
status = e_gw_connection_get_items (cnc, container_id, "peek recipient distribution created delivered attachments subject status size", NULL, &list);
if (status != E_GW_CONNECTION_STATUS_OK) {
if (status ==E_GW_CONNECTION_STATUS_OTHER) {
@@ -978,6 +979,8 @@ groupwise_refresh_folder(CamelFolder *fo
list = NULL;
}
goto end1;
+#endif
+ is_proxy = TRUE;
}
time_string = g_strdup (((CamelGroupwiseSummary *) folder->summary)->time_string);

View File

@ -1,720 +0,0 @@
Index: camel/providers/imap/camel-imap-command.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-command.c,v
retrieving revision 1.76.2.1
diff -u -r1.76.2.1 camel-imap-command.c
--- camel/providers/imap/camel-imap-command.c 12 Apr 2006 19:08:32 -0000 1.76.2.1
+++ camel/providers/imap/camel-imap-command.c 19 May 2006 15:19:00 -0000
@@ -38,7 +38,6 @@
#include "camel-imap-folder.h"
#include "camel-imap-store.h"
#include "camel-imap-store-summary.h"
-#include "camel-imap-private.h"
#include <camel/camel-exception.h>
#include <camel/camel-private.h>
#include <camel/camel-utf8.h>
Index: camel/providers/imap/camel-imap-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.c,v
retrieving revision 1.358.2.1
diff -u -r1.358.2.1 camel-imap-folder.c
--- camel/providers/imap/camel-imap-folder.c 21 Apr 2006 09:21:20 -0000 1.358.2.1
+++ camel/providers/imap/camel-imap-folder.c 19 May 2006 15:19:00 -0000
@@ -37,11 +37,11 @@
/*#include "libedataserver/e-path.h"*/
#include "libedataserver/e-time-utils.h"
#include "libedataserver/e-data-server-util.h"
+#include "libedataserver/e-msgport.h"
#include "camel-imap-folder.h"
#include "camel-imap-command.h"
#include "camel-imap-message-cache.h"
-#include "camel-imap-private.h"
#include "camel-imap-search.h"
#include "camel-imap-store.h"
#include "camel-imap-summary.h"
@@ -70,6 +70,7 @@
#include "camel-i18n.h"
#include "camel/camel-store-summary.h"
+
#define d(x)
/* set to -1 for infinite size (suggested max command-line length is
@@ -189,12 +190,6 @@
folder->folder_flags |= (CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY |
CAMEL_FOLDER_HAS_SEARCH_CAPABILITY);
- imap_folder->priv = g_malloc0(sizeof(*imap_folder->priv));
-#ifdef ENABLE_THREADS
- imap_folder->priv->search_lock = e_mutex_new(E_MUTEX_SIMPLE);
- imap_folder->priv->cache_lock = e_mutex_new(E_MUTEX_REC);
-#endif
-
imap_folder->need_rescan = TRUE;
}
@@ -347,9 +342,7 @@
else if (validity != imap_summary->validity) {
imap_summary->validity = validity;
camel_folder_summary_clear (folder->summary);
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
camel_imap_message_cache_clear (imap_folder->cache);
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
imap_folder->need_rescan = FALSE;
camel_imap_folder_changed (folder, exists, NULL, ex);
return;
@@ -423,12 +416,6 @@
camel_object_unref (CAMEL_OBJECT (imap_folder->search));
if (imap_folder->cache)
camel_object_unref (CAMEL_OBJECT (imap_folder->cache));
-
-#ifdef ENABLE_THREADS
- e_mutex_destroy(imap_folder->priv->search_lock);
- e_mutex_destroy(imap_folder->priv->cache_lock);
-#endif
- g_free(imap_folder->priv);
}
static int
@@ -475,26 +462,28 @@
CamelImapStore *imap_store = (CamelImapStore *)folder->parent_store;
char *folder_dir, *summary_path, *state_file;
char *folders;
-
+
+ CAMEL_SERVICE_LOCK (imap_store, connect_lock);
+
folders = g_strconcat (imap_store->storage_path, "/folders", NULL);
folder_dir = imap_path_to_physical (folders, new);
g_free (folders);
summary_path = g_strdup_printf("%s/summary", folder_dir);
-
- CAMEL_IMAP_FOLDER_LOCK (folder, cache_lock);
+
camel_imap_message_cache_set_path(imap_folder->cache, folder_dir);
- CAMEL_IMAP_FOLDER_UNLOCK (folder, cache_lock);
-
+
camel_folder_summary_set_filename(folder->summary, summary_path);
-
+
state_file = g_strdup_printf ("%s/cmeta", folder_dir);
camel_object_set(folder, NULL, CAMEL_OBJECT_STATE_FILE, state_file, NULL);
g_free(state_file);
-
+
g_free(summary_path);
g_free(folder_dir);
-
+
((CamelFolderClass *)disco_folder_class)->rename(folder, new);
+
+ CAMEL_SERVICE_UNLOCK (imap_store, connect_lock);
}
static void
@@ -1202,21 +1191,23 @@
char *uid;
uid = get_temp_uid ();
-
+
+ CAMEL_SERVICE_LOCK (imap_store, connect_lock);
+
camel_imap_summary_add_offline (folder->summary, uid, message, info);
- CAMEL_IMAP_FOLDER_LOCK (folder, cache_lock);
camel_imap_message_cache_insert_wrapper (cache, uid, "",
CAMEL_DATA_WRAPPER (message), ex);
- CAMEL_IMAP_FOLDER_UNLOCK (folder, cache_lock);
-
+
changes = camel_folder_change_info_new ();
camel_folder_change_info_add_uid (changes, uid);
- camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed",
- changes);
+ camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
camel_folder_change_info_free (changes);
camel_disco_diary_log (CAMEL_DISCO_STORE (imap_store)->diary,
CAMEL_DISCO_DIARY_FOLDER_APPEND, folder, uid);
+
+ CAMEL_SERVICE_UNLOCK (imap_store, connect_lock);
+
if (appended_uid)
*appended_uid = uid;
else
@@ -1327,21 +1318,22 @@
CamelImapResponse *response;
char *uid;
int count;
-
+
+ CAMEL_SERVICE_LOCK (store, connect_lock);
+
count = camel_folder_summary_count (folder->summary);
- response = do_append (folder, message, info, &uid, ex);
- if (!response)
+ if (!(response = do_append (folder, message, info, &uid, ex))) {
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
return;
+ }
if (uid) {
/* Cache first, since freeing response may trigger a
* summary update that will want this information.
*/
- CAMEL_IMAP_FOLDER_LOCK (folder, cache_lock);
camel_imap_message_cache_insert_wrapper (
CAMEL_IMAP_FOLDER (folder)->cache, uid,
"", CAMEL_DATA_WRAPPER (message), ex);
- CAMEL_IMAP_FOLDER_UNLOCK (folder, cache_lock);
if (appended_uid)
*appended_uid = uid;
else
@@ -1352,10 +1344,10 @@
camel_imap_response_free (store, response);
/* Make sure a "folder_changed" is emitted. */
- CAMEL_SERVICE_LOCK (store, connect_lock);
if (store->current_folder != folder ||
camel_folder_summary_count (folder->summary) == count)
imap_refresh_info (folder, ex);
+
CAMEL_SERVICE_UNLOCK (store, connect_lock);
}
@@ -1368,19 +1360,20 @@
CamelImapResponse *response;
char *uid;
- response = do_append (folder, message, info, &uid, ex);
- if (!response)
+ CAMEL_SERVICE_LOCK (store, connect_lock);
+
+ if (!(response = do_append (folder, message, info, &uid, ex))) {
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
return;
+ }
if (uid) {
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
const char *olduid = camel_message_info_uid (info);
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
camel_imap_message_cache_copy (imap_folder->cache, olduid,
imap_folder->cache, uid, ex);
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
-
+
if (appended_uid)
*appended_uid = uid;
else
@@ -1389,6 +1382,8 @@
*appended_uid = NULL;
camel_imap_response_free (store, response);
+
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
}
@@ -1405,17 +1400,9 @@
CamelMessageInfo *mi;
char *uid, *destuid;
int i;
-
- /* We grab the store's command lock first, and then grab the
- * source and destination cache_locks. This way we can't
- * deadlock in the case where we're simultaneously also trying
- * to copy messages in the other direction from another thread.
- */
+
CAMEL_SERVICE_LOCK (store, connect_lock);
- CAMEL_IMAP_FOLDER_LOCK (source, cache_lock);
- CAMEL_IMAP_FOLDER_LOCK (dest, cache_lock);
- CAMEL_SERVICE_UNLOCK (store, connect_lock);
-
+
if (transferred_uids) {
*transferred_uids = g_ptr_array_new ();
g_ptr_array_set_size (*transferred_uids, uids->len);
@@ -1451,16 +1438,15 @@
if (delete_originals)
camel_folder_delete_message (source, uid);
}
-
- CAMEL_IMAP_FOLDER_UNLOCK (dest, cache_lock);
- CAMEL_IMAP_FOLDER_UNLOCK (source, cache_lock);
-
+
camel_object_trigger_event (CAMEL_OBJECT (dest), "folder_changed", changes);
camel_folder_change_info_free (changes);
camel_disco_diary_log (CAMEL_DISCO_STORE (store)->diary,
CAMEL_DISCO_DIARY_FOLDER_TRANSFER,
source, dest, uids, delete_originals);
+
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
}
static void
@@ -1490,22 +1476,14 @@
src = imap_uid_set_to_array (source->summary, srcset);
dest = imap_uid_set_to_array (destination->summary, destset);
-
+
if (src && dest && src->len == dest->len) {
- /* We don't have to worry about deadlocking on the
- * cache locks here, because we've got the store's
- * command lock too, so no one else could be here.
- */
- CAMEL_IMAP_FOLDER_LOCK (source, cache_lock);
- CAMEL_IMAP_FOLDER_LOCK (destination, cache_lock);
for (i = 0; i < src->len; i++) {
camel_imap_message_cache_copy (scache, src->pdata[i],
dcache, dest->pdata[i],
NULL);
}
- CAMEL_IMAP_FOLDER_UNLOCK (source, cache_lock);
- CAMEL_IMAP_FOLDER_UNLOCK (destination, cache_lock);
-
+
imap_uid_array_free (src);
imap_uid_array_free (dest);
return;
@@ -1567,7 +1545,9 @@
qsort (uids->pdata, uids->len, sizeof (void *), uid_compar);
/* Now copy the messages */
+ CAMEL_SERVICE_LOCK (store, connect_lock);
do_copy(source, uids, dest, delete_originals, ex);
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
if (camel_exception_is_set (ex))
return;
@@ -1587,12 +1567,15 @@
gboolean delete_originals, CamelException *ex)
{
CamelDiscoDiary *diary = CAMEL_DISCO_STORE (source->parent_store)->diary;
+ CamelStore *store = source->parent_store;
GPtrArray *realuids;
int first, i;
const char *uid;
CamelMimeMessage *message;
CamelMessageInfo *info;
+ CAMEL_SERVICE_LOCK (store, connect_lock);
+
qsort (uids->pdata, uids->len, sizeof (void *), uid_compar);
/* This is trickier than append_resyncing, because some of
@@ -1649,10 +1632,12 @@
}
g_ptr_array_free (realuids, FALSE);
-
+
/* FIXME */
if (transferred_uids)
*transferred_uids = NULL;
+
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
}
static GPtrArray *
@@ -1660,36 +1645,36 @@
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
GPtrArray *matches;
-
+
/* we could get around this by creating a new search object each time,
but i doubt its worth it since any long operation would lock the
command channel too */
- CAMEL_IMAP_FOLDER_LOCK(folder, search_lock);
-
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
+
camel_folder_search_set_folder (imap_folder->search, folder);
matches = camel_folder_search_search(imap_folder->search, expression, NULL, ex);
-
- CAMEL_IMAP_FOLDER_UNLOCK(folder, search_lock);
-
+
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
+
return matches;
}
static GPtrArray *
-imap_search_by_uids(CamelFolder *folder, const char *expression, GPtrArray *uids, CamelException *ex)
+imap_search_by_uids (CamelFolder *folder, const char *expression, GPtrArray *uids, CamelException *ex)
{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER(folder);
+ CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
GPtrArray *matches;
-
+
if (uids->len == 0)
- return g_ptr_array_new();
-
- CAMEL_IMAP_FOLDER_LOCK(folder, search_lock);
-
+ return g_ptr_array_new ();
+
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
+
camel_folder_search_set_folder(imap_folder->search, folder);
matches = camel_folder_search_search(imap_folder->search, expression, uids, ex);
-
- CAMEL_IMAP_FOLDER_UNLOCK(folder, search_lock);
-
+
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
+
return matches;
}
@@ -1697,14 +1682,14 @@
imap_search_free (CamelFolder *folder, GPtrArray *uids)
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
-
+
g_return_if_fail (imap_folder->search);
-
- CAMEL_IMAP_FOLDER_LOCK(folder, search_lock);
-
+
+ CAMEL_SERVICE_LOCK (folder->parent_store, connect_lock);
+
camel_folder_search_free_result (imap_folder->search, uids);
-
- CAMEL_IMAP_FOLDER_UNLOCK(folder, search_lock);
+
+ CAMEL_SERVICE_UNLOCK (folder->parent_store, connect_lock);
}
static CamelMimeMessage *get_message (CamelImapFolder *imap_folder,
@@ -2056,7 +2041,7 @@
CamelMimeMessage *msg = NULL;
CamelStream *stream = NULL;
int retry;
-
+
mi = (CamelImapMessageInfo *)camel_folder_summary_uid (folder->summary, uid);
if (mi == NULL) {
camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
@@ -2066,7 +2051,7 @@
/* If its cached in full, just get it as is, this is only a shortcut,
since we get stuff from the cache anyway. It affects a busted connection though. */
- if ( (stream = camel_imap_folder_fetch_data(imap_folder, uid, "", TRUE, NULL))
+ if ((stream = camel_imap_folder_fetch_data(imap_folder, uid, "", TRUE, NULL))
&& (msg = get_message_simple(imap_folder, uid, stream, ex)))
goto done;
@@ -2095,7 +2080,7 @@
char *body, *found_uid;
int i;
- CAMEL_SERVICE_LOCK(store, connect_lock);
+ CAMEL_SERVICE_LOCK (store, connect_lock);
if (!camel_imap_store_connected(store, ex)) {
CAMEL_SERVICE_UNLOCK(store, connect_lock);
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
@@ -2104,8 +2089,7 @@
}
response = camel_imap_command (store, folder, ex, "UID FETCH %s BODY", uid);
- CAMEL_SERVICE_UNLOCK(store, connect_lock);
-
+
if (response) {
for (i = 0, body = NULL; i < response->untagged->len; i++) {
fetch_data = parse_fetch_response (imap_folder, response->untagged->pdata[i]);
@@ -2125,7 +2109,7 @@
imap_parse_body ((const char **) &body, folder, mi->info.content);
camel_folder_summary_touch (folder->summary);
}
-
+
if (fetch_data)
g_datalist_clear (&fetch_data);
@@ -2133,6 +2117,8 @@
} else {
camel_exception_clear(ex);
}
+
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
}
if (camel_debug_start("imap:folder")) {
@@ -2637,9 +2623,7 @@
}
camel_folder_change_info_remove_uid (changes, camel_message_info_uid (info));
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
camel_imap_message_cache_remove (imap_folder->cache, camel_message_info_uid (info));
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
camel_folder_summary_remove (folder->summary, info);
camel_message_info_free(info);
}
@@ -2686,36 +2670,23 @@
char *found_uid;
int i;
- /* EXPUNGE responses have to modify the cache, which means
- * they have to grab the cache_lock while holding the
- * connect_lock.
-
- * Because getting the service lock may cause MUCH unecessary
- * delay when we already have the data locally, we do the
- * locking separately. This could cause a race
- * getting the same data from the cache, but that is only
- * an inefficiency, and bad luck.
- */
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
+ CAMEL_SERVICE_LOCK (store, connect_lock);
stream = camel_imap_message_cache_get (imap_folder->cache, uid, section_text, ex);
if (!stream && (!strcmp (section_text, "HEADER") || !strcmp (section_text, "0"))) {
camel_exception_clear (ex);
stream = camel_imap_message_cache_get (imap_folder->cache, uid, "", ex);
}
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
- if (stream || cache_only)
+ if (stream || cache_only) {
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
return stream;
-
+ }
+
camel_exception_clear(ex);
-
- CAMEL_SERVICE_LOCK (store, connect_lock);
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
-
+
if (!camel_imap_store_connected(store, ex)) {
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("This message is not currently available"));
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
CAMEL_SERVICE_UNLOCK (store, connect_lock);
return NULL;
}
@@ -2730,11 +2701,9 @@
"UID FETCH %s BODY.PEEK[%s]",
uid, section_text);
}
- /* We won't need the connect_lock again after this. */
- CAMEL_SERVICE_UNLOCK (store, connect_lock);
if (!response) {
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
return NULL;
}
@@ -2748,8 +2717,9 @@
g_datalist_clear (&fetch_data);
stream = NULL;
}
+
camel_imap_response_free (store, response);
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
+
if (!stream) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("Could not find message body in FETCH response."));
@@ -2758,6 +2728,8 @@
g_datalist_clear (&fetch_data);
}
+ CAMEL_SERVICE_UNLOCK (store, connect_lock);
+
return stream;
}
@@ -2769,6 +2741,8 @@
gboolean cache_header = TRUE, header = FALSE;
size_t body_len = 0;
+ CAMEL_SERVICE_ASSERT_LOCKED (((CamelFolder *) imap_folder)->parent_store, connect_lock);
+
if (*response != '(') {
long seq;
@@ -2887,11 +2861,9 @@
if (header && !cache_header) {
stream = camel_stream_mem_new_with_buffer (body, body_len);
} else {
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
stream = camel_imap_message_cache_insert (imap_folder->cache,
uid, part_spec,
body, body_len, NULL);
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
if (stream == NULL)
stream = camel_stream_mem_new_with_buffer (body, body_len);
}
Index: camel/providers/imap/camel-imap-folder.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.h,v
retrieving revision 1.43
diff -u -r1.43 camel-imap-folder.h
--- camel/providers/imap/camel-imap-folder.h 31 Aug 2005 04:26:02 -0000 1.43
+++ camel/providers/imap/camel-imap-folder.h 19 May 2006 15:19:00 -0000
@@ -44,9 +44,7 @@
struct _CamelImapFolder {
CamelDiscoFolder parent_object;
-
- struct _CamelImapFolderPrivate *priv;
-
+
CamelFolderSearch *search;
CamelImapMessageCache *cache;
Index: camel/providers/imap/camel-imap-private.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-private.h,v
retrieving revision 1.12
diff -u -r1.12 camel-imap-private.h
--- camel/providers/imap/camel-imap-private.h 31 Aug 2005 04:26:02 -0000 1.12
+++ camel/providers/imap/camel-imap-private.h 19 May 2006 15:19:00 -0000
@@ -28,46 +28,6 @@
#pragma }
#endif /* __cplusplus */
-/* need a way to configure and save this data, if this header is to
- be installed. For now, dont install it */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef ENABLE_THREADS
-#include "libedataserver/e-msgport.h"
-#endif
-
-struct _CamelImapFolderPrivate {
-#ifdef ENABLE_THREADS
- EMutex *search_lock; /* for locking the search object */
- EMutex *cache_lock; /* for locking the cache object */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_IMAP_FOLDER_LOCK(f, l) (e_mutex_lock(((CamelImapFolder *)f)->priv->l))
-#define CAMEL_IMAP_FOLDER_UNLOCK(f, l) (e_mutex_unlock(((CamelImapFolder *)f)->priv->l))
-#else
-#define CAMEL_IMAP_FOLDER_LOCK(f, l)
-#define CAMEL_IMAP_FOLDER_UNLOCK(f, l)
-#endif
-
-struct _CamelImapWrapperPrivate {
-#ifdef ENABLE_THREADS
- GMutex *lock;
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_IMAP_WRAPPER_LOCK(f, l) (g_mutex_lock(((CamelImapWrapper *)f)->priv->l))
-#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l) (g_mutex_unlock(((CamelImapWrapper *)f)->priv->l))
-#else
-#define CAMEL_IMAP_WRAPPER_LOCK(f, l)
-#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l)
-#endif
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
Index: camel/providers/imap/camel-imap-search.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-search.c,v
retrieving revision 1.21
diff -u -r1.21 camel-imap-search.c
--- camel/providers/imap/camel-imap-search.c 15 Sep 2005 17:54:00 -0000 1.21
+++ camel/providers/imap/camel-imap-search.c 19 May 2006 15:19:00 -0000
@@ -34,7 +34,6 @@
#include "camel-imap-folder.h"
#include "camel-imap-store.h"
#include "camel-imap-search.h"
-#include "camel-imap-private.h"
#include "camel-imap-utils.h"
#include "camel-imap-summary.h"
Index: camel/providers/imap/camel-imap-store.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-store.c,v
retrieving revision 1.340.2.4
diff -u -r1.340.2.4 camel-imap-store.c
--- camel/providers/imap/camel-imap-store.c 1 May 2006 21:15:19 -0000 1.340.2.4
+++ camel/providers/imap/camel-imap-store.c 19 May 2006 15:19:00 -0000
@@ -58,7 +58,6 @@
#include "camel-imap-command.h"
#include "camel-imap-folder.h"
#include "camel-imap-message-cache.h"
-#include "camel-imap-private.h"
#include "camel-imap-store-summary.h"
#include "camel-imap-store.h"
#include "camel-imap-summary.h"
Index: camel/providers/imap/camel-imap-wrapper.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-wrapper.c,v
retrieving revision 1.14
diff -u -r1.14 camel-imap-wrapper.c
--- camel/providers/imap/camel-imap-wrapper.c 15 Sep 2005 18:08:50 -0000 1.14
+++ camel/providers/imap/camel-imap-wrapper.c 19 May 2006 15:19:00 -0000
@@ -30,7 +30,6 @@
#include "camel-imap-folder.h"
#include "camel-imap-wrapper.h"
-#include "camel-imap-private.h"
#include "camel-exception.h"
#include "camel-stream-filter.h"
#include "camel-mime-filter-basic.h"
@@ -38,6 +37,17 @@
#include "camel-mime-filter-charset.h"
#include "camel-mime-part.h"
+#include "libedataserver/e-msgport.h"
+
+
+struct _CamelImapWrapperPrivate {
+ GMutex *lock;
+};
+
+#define CAMEL_IMAP_WRAPPER_LOCK(f, l) (g_mutex_lock(((CamelImapWrapper *)f)->priv->l))
+#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l) (g_mutex_unlock(((CamelImapWrapper *)f)->priv->l))
+
+
static CamelDataWrapperClass *parent_class = NULL;
/* Returns the class for a CamelDataWrapper */
@@ -68,10 +78,9 @@
g_free (imap_wrapper->uid);
if (imap_wrapper->part)
g_free (imap_wrapper->part_spec);
-
-#ifdef ENABLE_THREADS
+
g_mutex_free (imap_wrapper->priv->lock);
-#endif
+
g_free (imap_wrapper->priv);
}
@@ -81,9 +90,7 @@
CamelImapWrapper *imap_wrapper = CAMEL_IMAP_WRAPPER (object);
imap_wrapper->priv = g_new0 (struct _CamelImapWrapperPrivate, 1);
-#ifdef ENABLE_THREADS
imap_wrapper->priv->lock = g_mutex_new ();
-#endif
}
CamelType

View File

@ -1,16 +0,0 @@
Index: camel/providers/imap/camel-imap-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.c,v
retrieving revision 1.358
diff -u -p -r1.358 camel-imap-folder.c
--- camel/providers/imap/camel-imap-folder.c 10 Jan 2006 07:56:47 -0000 1.358
+++ camel/providers/imap/camel-imap-folder.c 21 Apr 2006 09:14:56 -0000
@@ -2348,7 +2348,7 @@ imap_update_summary (CamelFolder *folder
CAMEL_SERVICE_ASSERT_LOCKED (store, connect_lock);
if (store->server_level >= IMAP_LEVEL_IMAP4REV1)
- header_spec = "HEADER";
+ header_spec = "HEADER.FIELDS (" CAMEL_MESSAGE_INFO_HEADERS MAILING_LIST_HEADERS ")";
else
header_spec = "0";

View File

@ -1,30 +0,0 @@
Index: configure.in
===================================================================
RCS file: /cvs/gnome/evolution-data-server/configure.in,v
retrieving revision 1.160
diff -u -p -r1.160 configure.in
--- configure.in 20 Mar 2006 13:53:00 -0000 1.160
+++ configure.in 24 Apr 2006 13:18:39 -0000
@@ -1331,7 +1331,6 @@ camel/providers/groupwise/Makefile
camel/providers/hula/Makefile
camel/providers/imap/Makefile
camel/providers/imapp/Makefile
-camel/providers/imap4/Makefile
camel/providers/local/Makefile
camel/providers/nntp/Makefile
camel/providers/pop3/Makefile
Index: camel/providers/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/Makefile.am,v
retrieving revision 1.38
diff -u -p -r1.38 Makefile.am
--- camel/providers/Makefile.am 14 Nov 2005 19:15:31 -0000 1.38
+++ camel/providers/Makefile.am 24 Apr 2006 13:18:39 -0000
@@ -13,6 +13,6 @@ else
SENDMAIL_DIR=sendmail
endif
-SUBDIRS = pop3 $(SENDMAIL_DIR) smtp imap imap4 $(NNTP_DIR) local $(IMAPP_DIR) groupwise hula
+SUBDIRS = pop3 $(SENDMAIL_DIR) smtp imap $(NNTP_DIR) local $(IMAPP_DIR) groupwise hula

View File

@ -1,6 +1,7 @@
--- evolution-data-server-1.8.0/configure.in 2006/09/30 05:44:59 1.3
+++ evolution-data-server-1.8.0/configure.in 2006/09/30 05:46:47
@@ -1227,7 +1227,7 @@
=== modified file 'configure.in'
--- configure.in 2007-12-18 18:57:46 +0000
+++ configure.in 2007-12-18 19:02:54 +0000
@@ -1367,7 +1367,7 @@
AC_SUBST(IDL_INCLUDES)
AC_MSG_CHECKING(for libgnomeui server directory)
@ -9,3 +10,4 @@
AC_MSG_RESULT($GNOMEUI_SERVERDIR)
AC_DEFINE_UNQUOTED(GNOMEUI_SERVERDIR, "$GNOMEUI_SERVERDIR", [Path where we can find gnome_segv2])

View File

@ -1,16 +0,0 @@
Index: libedataserverui/e-name-selector-list.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/e-name-selector-list.c,v
retrieving revision 1.1
diff -u -p -r1.1 e-name-selector-list.c
--- libedataserverui/e-name-selector-list.c 16 Jan 2006 13:32:30 -0000 1.1
+++ libedataserverui/e-name-selector-list.c 24 Apr 2006 08:31:57 -0000
@@ -216,7 +216,7 @@ enl_entry_key_press_event (ENameSelector
GdkEventKey *event,
gpointer dummy)
{
- if ( (event->state & GDK_CONTROL_MASK) && (event->keyval == GDK_Right)) {
+ if ( (event->state & GDK_CONTROL_MASK) && (event->keyval == GDK_Down)) {
enl_popup_position (list);
gtk_widget_show_all (GTK_WIDGET (list->popup));
enl_popup_grab (list);

View File

@ -1,21 +0,0 @@
--- configure.in
+++ configure.in
@@ -288,15 +288,15 @@
fi
if test "x${check_manually}" = "xno"; then
- PKG_CHECK_MODULES(NSS, mozilla-nss, have_nss="yes", have_nss="no")
+ PKG_CHECK_MODULES(NSS, nss, have_nss="yes", have_nss="no")
if test "x${have_nss}" = "xyes"; then
msg_ssl="yes (Mozilla NSS)"
if test "x$enable_smime" = "xyes"; then
AC_DEFINE(ENABLE_SMIME,1,[Define if SMIME should be enabled])
msg_smime="yes (Mozilla NSS)"
fi
- mozilla_nspr="mozilla-nspr"
- mozilla_nss="mozilla-nss"
+ mozilla_nspr="nspr"
+ mozilla_nss="nss"
AC_DEFINE(HAVE_NSS,1,[Define if you have NSS])
AC_DEFINE(HAVE_SSL,1,[Define if you have a supported SSL library])
MANUAL_NSPR_CFLAGS=""

View File

@ -1,384 +0,0 @@
--- addressbook/backends/groupwise/e-book-backend-groupwise.c.orig 2006-01-10 08:54:45.000000000 +0100
+++ addressbook/backends/groupwise/e-book-backend-groupwise.c 2006-03-23 16:10:25.226981271 +0100
@@ -2330,6 +2330,8 @@ static EDataBookView *
find_book_view (EBookBackendGroupwise *ebgw)
{
EList *views = e_book_backend_get_book_views (E_BOOK_BACKEND (ebgw));
+ if (!views)
+ return NULL;
EIterator *iter = e_list_get_iterator (views);
EDataBookView *rv = NULL;
@@ -2348,28 +2350,28 @@ find_book_view (EBookBackendGroupwise *e
static void
add_sequence_to_cache (EBookBackendCache *cache,
- guint first_sequence,
- guint last_sequence,
- guint last_po_rebuild_time)
+ gdouble first_sequence,
+ gdouble last_sequence,
+ gdouble last_po_rebuild_time)
{
gchar *tmp;
/* This is the system address book. Let try add the sequence to maintain deltas */
- tmp = g_strdup_printf("%d", first_sequence);
+ tmp = g_strdup_printf("%lf", first_sequence);
if (!e_file_cache_get_object (E_FILE_CACHE(cache), "firstSequence"))
e_file_cache_add_object (E_FILE_CACHE(cache), "firstSequence", tmp);
else
e_file_cache_replace_object (E_FILE_CACHE(cache), "firstSequence", tmp);
g_free (tmp);
- tmp = g_strdup_printf("%d", last_sequence);
+ tmp = g_strdup_printf("%lf", last_sequence);
if (!e_file_cache_get_object (E_FILE_CACHE(cache), "lastSequence"))
e_file_cache_add_object (E_FILE_CACHE(cache), "lastSequence", tmp);
else
e_file_cache_replace_object (E_FILE_CACHE(cache), "lastSequence", tmp);
g_free (tmp);
- tmp = g_strdup_printf("%d", last_po_rebuild_time);
+ tmp = g_strdup_printf("%lf", last_po_rebuild_time);
if (!e_file_cache_get_object (E_FILE_CACHE(cache), "lastTimePORebuild"))
e_file_cache_add_object (E_FILE_CACHE(cache), "lastTimePORebuild", tmp);
else
@@ -2439,6 +2441,10 @@ build_cache (EBookBackendGroupwise *ebgw
GTimeVal tstart, tend;
unsigned long diff;
+ if(!ebgw)
+ return FALSE;
+
+ printf("build cache\n");
if (enable_debug) {
g_get_current_time(&start);
printf("Building the cache for %s \n", ebgw->priv->book_name);
@@ -2456,10 +2462,11 @@ build_cache (EBookBackendGroupwise *ebgw
if (book_view) {
closure = get_closure (book_view);
bonobo_object_ref (book_view);
-
- g_mutex_lock (closure->mutex);
- g_cond_signal (closure->cond);
- g_mutex_unlock (closure->mutex);
+ if (closure) {
+ g_mutex_lock (closure->mutex);
+ g_cond_signal (closure->cond);
+ g_mutex_unlock (closure->mutex);
+ }
}
e_file_cache_freeze_changes (E_FILE_CACHE (priv->cache));
@@ -2590,6 +2597,10 @@ update_cache (EBookBackendGroupwise *ebg
GTimeVal start, end;
unsigned long diff;
+ if (!ebgw)
+ return FALSE;
+
+ printf("Inside update cache\n");
if (enable_debug) {
g_get_current_time(&start);
printf("updating cache for %s\n", ebgw->priv->book_name);
@@ -2599,10 +2610,11 @@ update_cache (EBookBackendGroupwise *ebg
if (book_view) {
closure = get_closure (book_view);
bonobo_object_ref (book_view);
-
- g_mutex_lock (closure->mutex);
- g_cond_signal (closure->cond);
- g_mutex_unlock (closure->mutex);
+ if (closure) {
+ g_mutex_lock (closure->mutex);
+ g_cond_signal (closure->cond);
+ g_mutex_unlock (closure->mutex);
+ }
}
cache_file_name = e_file_cache_get_filename (E_FILE_CACHE(ebgw->priv->cache));
@@ -2680,7 +2692,6 @@ update_cache (EBookBackendGroupwise *ebg
printf("updating the cache for %s complated in %ld.%03ld seconds for %d contacts\n",
ebgw->priv->book_name, diff / 1000, diff % 1000, contact_num);
}
-
return FALSE;
}
@@ -2688,8 +2699,8 @@ static gboolean
update_address_book_deltas (EBookBackendGroupwise *ebgw)
{
int status, contact_num = 0;
- guint server_first_sequence = -1, server_last_sequence = -1, server_last_po_rebuild_time = -1;
- guint cache_last_sequence = -1, cache_last_po_rebuild_time = -1;
+ gdouble server_first_sequence = -1, server_last_sequence = -1, server_last_po_rebuild_time = -1;
+ gdouble cache_last_sequence = -1, cache_last_po_rebuild_time = -1;
const char *cache_obj;
char *tmp, *count, *sequence, *status_msg;
GList *add_list = NULL, *delete_list = NULL;
@@ -2697,6 +2708,9 @@ update_address_book_deltas (EBookBackend
EDataBookView *book_view;
GroupwiseBackendSearchClosure *closure;
+ if (!ebgw)
+ return FALSE;
+
EBookBackendGroupwisePrivate *priv = ebgw->priv;
EBookBackendCache *cache = priv->cache;
@@ -2727,11 +2741,11 @@ update_address_book_deltas (EBookBackend
/* Read the last sequence and last poa rebuild time from cache */
cache_obj = e_file_cache_get_object (E_FILE_CACHE (cache), "lastSequence");
if (cache_obj)
- cache_last_sequence = atoi (cache_obj);
+ cache_last_sequence = strtod (cache_obj, NULL);
cache_obj = e_file_cache_get_object (E_FILE_CACHE (cache), "lastTimePORebuild");
if (cache_obj)
- cache_last_po_rebuild_time = atoi (cache_obj);
+ cache_last_po_rebuild_time = strtod (cache_obj, NULL);
/* check whether the all the sequences are available and also whether the PO is rebuilt */
if (server_first_sequence > cache_last_sequence || cache_last_sequence == -1 ||
@@ -2758,14 +2772,15 @@ update_address_book_deltas (EBookBackend
if (book_view) {
closure = get_closure (book_view);
bonobo_object_ref (book_view);
-
- g_mutex_lock (closure->mutex);
- g_cond_signal (closure->cond);
- g_mutex_unlock (closure->mutex);
+ if (closure){
+ g_mutex_lock (closure->mutex);
+ g_cond_signal (closure->cond);
+ g_mutex_unlock (closure->mutex);
+ }
}
/* update the cache */
- sequence = g_strdup_printf ("%d", cache_last_sequence +1);
+ sequence = g_strdup_printf ("%lf", cache_last_sequence +1);
count = g_strdup_printf ("%d", CURSOR_ITEM_LIMIT);
/* load summary file */
@@ -2782,6 +2797,7 @@ update_address_book_deltas (EBookBackend
e_file_cache_freeze_changes (E_FILE_CACHE (cache));
while (cache_last_sequence < server_last_sequence) {
+ printf("Calling get_items_delta\n");
e_gw_connection_get_items_delta (priv->cnc,
ebgw->priv->container_id,
"name email sync", count,
@@ -2793,6 +2809,8 @@ update_address_book_deltas (EBookBackend
printf("sequence differs but no changes found !!!\n");
break;
}
+ printf("add_list size:%d\n", g_list_length(add_list));
+ printf("delete_list size:%d\n", g_list_length(delete_list));
for (; add_list != NULL; add_list = g_list_next(add_list)) {
const char *id;
@@ -2861,15 +2879,15 @@ update_address_book_deltas (EBookBackend
/* cache is updated, now adding the sequence information to the cache */
- tmp = g_strdup_printf("%d", server_first_sequence);
+ tmp = g_strdup_printf("%lf", server_first_sequence);
e_file_cache_replace_object (E_FILE_CACHE(cache), "firstSequence", tmp);
g_free (tmp);
- tmp = g_strdup_printf("%d", server_last_sequence);
+ tmp = g_strdup_printf("%lf", server_last_sequence);
e_file_cache_replace_object (E_FILE_CACHE(cache), "lastSequence", tmp);
g_free (tmp);
- tmp = g_strdup_printf("%d", server_last_po_rebuild_time);
+ tmp = g_strdup_printf("%lf", server_last_po_rebuild_time);
e_file_cache_replace_object (E_FILE_CACHE(cache), "lastTimePORebuild", tmp);
g_free (tmp);
@@ -2940,7 +2958,7 @@ e_book_backend_groupwise_authenticate_us
gboolean is_writable;
const char *cache_refresh_interval_set;
int cache_refresh_interval = CACHE_REFRESH_INTERVAL;
-
+
printf ("authenticate user ............\n");
ebgw = E_BOOK_BACKEND_GROUPWISE (backend);
priv = ebgw->priv;
@@ -2962,6 +2980,7 @@ e_book_backend_groupwise_authenticate_us
case GNOME_Evolution_Addressbook_MODE_REMOTE:
if (priv->cnc) { /*we have already authenticated to server */
+ printf("already authenticated\n");
e_data_book_respond_authenticate_user (book, opid, GNOME_Evolution_Addressbook_Success);
return;
}
@@ -2979,6 +2998,8 @@ e_book_backend_groupwise_authenticate_us
id = NULL;
is_writable = FALSE;
+ if(priv->book_name)
+ printf("book_name:%s\n", priv->book_name);
status = e_gw_connection_get_address_book_id (priv->cnc, priv->book_name, &id, &is_writable);
if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
status = e_gw_connection_get_address_book_id (priv->cnc, priv->book_name, &id, &is_writable);
@@ -3015,17 +3036,23 @@ e_book_backend_groupwise_authenticate_us
SUMMARY_FLUSH_TIMEOUT);
if (e_book_backend_cache_is_populated (priv->cache)) {
- if (priv->is_writable)
+ printf("cache is populated\n");
+ if (priv->is_writable){
+ printf("is writable\n");
+ printf("creating update_cache thread\n");
g_thread_create ((GThreadFunc) update_cache, ebgw, FALSE, NULL);
+ }
else if (priv->marked_for_offline) {
+ printf("marked for offline\n");
GThread *t;
+ printf("creating update_address_book_deltas thread\n");
t = g_thread_create ((GThreadFunc) update_address_book_deltas, ebgw, TRUE, NULL);
/* spawn a thread to update the system address book cache
* at given intervals
*/
- cache_refresh_interval_set = g_getenv ("BOOK_CACHE_REFESH_INTERVAL");
+ cache_refresh_interval_set = g_getenv ("BOOK_CACHE_REFRESH_INTERVAL");
if (cache_refresh_interval_set) {
cache_refresh_interval = g_ascii_strtod (cache_refresh_interval_set,
NULL); /* use this */
@@ -3043,12 +3070,16 @@ e_book_backend_groupwise_authenticate_us
}
else if (priv->is_writable) { /* for personal books we always cache */
/* Personal address book and frequent contacts */
+ printf("else if is _writable");
+ printf("build_cahe thread");
g_thread_create ((GThreadFunc) build_cache, ebgw, FALSE, NULL);
}
else if(priv->marked_for_offline) {
+ printf("else if marked_for_offline\n");
GThread *t;
/* System address book */
/* cache is not populated and book is not writable and marked for offline usage */
+ printf("creating update_address_book_deltas thread\n");
t = g_thread_create ((GThreadFunc) update_address_book_deltas, ebgw, TRUE, NULL);
g_thread_join (t);
/* set the cache refresh time */
@@ -3429,6 +3460,7 @@ e_book_backend_groupwise_init (EBookBack
priv->marked_for_offline = FALSE;
priv->use_ssl = NULL;
priv->cache=NULL;
+ priv->cnc = NULL;
priv->original_uri = NULL;
priv->cache_timeout = 0;
priv->reserved1 = NULL;
--- servers/groupwise/e-gw-connection.c.orig 2006-03-23 16:08:44.842634384 +0100
+++ servers/groupwise/e-gw-connection.c 2006-03-23 16:10:25.228981338 +0100
@@ -685,8 +685,8 @@ e_gw_connection_get_container_id (EGwCon
}
EGwConnectionStatus
-e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, guint *first_sequence,
- guint *last_sequence, guint *last_po_rebuild_time )
+e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, gdouble *first_sequence,
+ gdouble *last_sequence, gdouble *last_po_rebuild_time )
{
SoupSoapMessage *msg;
SoupSoapResponse *response;
@@ -734,21 +734,21 @@ e_gw_connection_get_items_delta_info (EG
subparam = soup_soap_parameter_get_first_child_by_name (param, "firstSequence");
if (subparam)
- *first_sequence = soup_soap_parameter_get_int_value(subparam);
+ *first_sequence = strtod (soup_soap_parameter_get_string_value(subparam), NULL);
else
*first_sequence = -1;
subparam = soup_soap_parameter_get_first_child_by_name (param, "lastSequence");
if (subparam)
- *last_sequence = soup_soap_parameter_get_int_value(subparam);
+ *last_sequence = strtod (soup_soap_parameter_get_string_value(subparam), NULL);
else
*last_sequence = -1;
subparam = soup_soap_parameter_get_first_child_by_name (param, "lastTimePORebuild");
if (subparam)
- *last_po_rebuild_time = soup_soap_parameter_get_int_value(subparam);
+ *last_po_rebuild_time = strtod (soup_soap_parameter_get_string_value(subparam), NULL);
else
*last_po_rebuild_time = -1;
Index: servers/groupwise/e-gw-connection.h
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/e-gw-connection.h,v
retrieving revision 1.68
diff -u -p -r1.68 e-gw-connection.h
--- servers/groupwise/e-gw-connection.h 31 Aug 2005 04:26:07 -0000 1.68
+++ servers/groupwise/e-gw-connection.h 20 Mar 2006 14:11:38 -0000
@@ -100,7 +100,7 @@ EGwConnectionStatus e_gw_connection_get_
EGwConnectionStatus e_gw_connection_send_item (EGwConnection *cnc, EGwItem *item, GSList **id_list);
EGwConnectionStatus e_gw_connection_remove_item (EGwConnection *cnc, const char *container, const char *id);
EGwConnectionStatus e_gw_connection_remove_items (EGwConnection *cnc, const char *container, GList *item_ids);
-EGwConnectionStatus e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, guint *first_sequence, guint *last_sequence, guint *last_po_rebuild_time);
+EGwConnectionStatus e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, gdouble *first_sequence, gdouble *last_sequence, gdouble *last_po_rebuild_time);
EGwConnectionStatus e_gw_connection_get_items_delta (EGwConnection *cnc, const char *container, const char *view, const char *count, const char * start_sequence, GList **add_list, GList **delete_list);
--- addressbook/libedata-book/e-data-book.c.orig 2005-05-14 08:36:47.000000000 +0200
+++ addressbook/libedata-book/e-data-book.c 2006-03-23 16:10:48.391753634 +0100
@@ -912,7 +912,7 @@ e_data_book_construct (EDataBook
g_object_ref (source);
- priv->backend = backend;
+ priv->backend = g_object_ref(backend);
priv->source = source;
}
@@ -965,6 +965,7 @@ e_data_book_dispose (GObject *object)
CORBA_exception_free (&ev);
g_object_unref (book->priv->source);
+ g_object_unref (book->priv->backend);
g_free (book->priv);
book->priv = NULL;
}
--- libedataserver/e-list.c.orig 2005-11-17 12:38:47.000000000 +0100
+++ libedataserver/e-list.c 2006-03-23 16:10:48.392753667 +0100
@@ -74,10 +74,11 @@ e_list_duplicate (EList *old)
EIterator *
e_list_get_iterator (EList *list)
{
- EIterator *iterator;
+ EIterator *iterator = NULL;
g_return_val_if_fail (list != NULL, NULL);
iterator = e_list_iterator_new(list);
- list->iterators = g_list_append(list->iterators, iterator);
+ if (iterator)
+ list->iterators = g_list_append(list->iterators, iterator);
return iterator;
}
--- libedataserver/e-list-iterator.c.orig 2005-11-17 12:38:47.000000000 +0100
+++ libedataserver/e-list-iterator.c 2006-03-23 16:10:48.392753667 +0100
@@ -66,11 +66,13 @@ e_list_iterator_init (EListIterator *lis
EIterator *
e_list_iterator_new (EList *list)
{
- EListIterator *iterator;
+ EListIterator *iterator = NULL;
g_return_val_if_fail (list != NULL, NULL);
iterator = g_object_new (E_TYPE_LIST_ITERATOR, NULL);
+ if (!iterator)
+ return NULL;
iterator->list = list;
g_object_ref(list);
iterator->iterator = list->list;