evolution-data-server/crash-while-browsing-through-mails.patch

1122 lines
36 KiB
Diff
Raw Normal View History

--- camel/providers/groupwise/camel-groupwise-store.c.orig 2006-03-27 17:23:54.929978882 +0200
+++ camel/providers/groupwise/camel-groupwise-store.c 2006-03-27 17:24:38.924418549 +0200
@@ -1154,8 +1154,7 @@ 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 (check_for_connection((CamelService *)store, ex)) {
+ 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");
@@ -1163,7 +1162,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);
--- camel/providers/groupwise/camel-groupwise-folder.c.orig 2006-03-27 17:24:21.222839155 +0200
+++ camel/providers/groupwise/camel-groupwise-folder.c 2006-03-27 17:24:38.923418516 +0200
@@ -74,13 +74,7 @@ struct _CamelGroupwiseFolderPrivate {
};
/*prototypes*/
-static void groupwise_transfer_messages_to (CamelFolder *source,
- GPtrArray *uids,
- CamelFolder *destination,
- GPtrArray **transferred_uids,
- gboolean delete_originals,
- CamelException *ex);
-
+static void groupwise_transfer_messages_to (CamelFolder *source, GPtrArray *uids, CamelFolder *destination, GPtrArray **transferred_uids, gboolean delete_originals, CamelException *ex);
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);
@@ -95,9 +89,7 @@ static CamelMimeMessage *groupwise_folde
#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);
@@ -110,7 +102,7 @@ groupwise_folder_get_message( CamelFolde
EGwItem *item;
CamelStream *stream, *cache_stream;
int errno;
-
+
/* see if it is there in cache */
mi = (CamelGroupwiseMessageInfo *) camel_folder_summary_uid (folder->summary, uid);
@@ -149,14 +141,14 @@ groupwise_folder_get_message( CamelFolde
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);
return NULL;
}
-
+
/* Check if we are really offline */
if (!camel_groupwise_store_connected (gw_store, ex)) {
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
@@ -181,7 +173,7 @@ groupwise_folder_get_message( CamelFolde
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Could not get message"));
g_free (container_id);
camel_message_info_free (&mi->info);
-
+
return NULL;
}
@@ -201,7 +193,7 @@ groupwise_folder_get_message( CamelFolde
}
CAMEL_GROUPWISE_FOLDER_UNLOCK (folder, cache_lock);
-
+
end:
camel_message_info_free (&mi->info);
g_free (container_id);
@@ -234,7 +226,6 @@ groupwise_populate_details_from_item (Ca
}
}
-
static void
groupwise_populate_msg_body_from_item (EGwConnection *cnc, CamelMultipart *multipart, EGwItem *item, char *body)
{
@@ -278,19 +269,19 @@ groupwise_populate_msg_body_from_item (E
case E_GW_ITEM_TYPE_NOTIFICATION:
case E_GW_ITEM_TYPE_MAIL:
case E_GW_ITEM_TYPE_NOTE:
- if (body)
- camel_mime_part_set_content(part, body, strlen(body), "text/html");
- else if (temp_body)
- camel_mime_part_set_content(part, temp_body, strlen(temp_body), e_gw_item_get_msg_content_type (item));
- else
- camel_mime_part_set_content(part, " ", strlen(" "), "text/html");
+ if (body)
+ camel_mime_part_set_content(part, body, strlen(body), "text/html");
+ else if (temp_body)
+ camel_mime_part_set_content(part, temp_body, strlen(temp_body), e_gw_item_get_msg_content_type (item));
+ else
+ camel_mime_part_set_content(part, " ", strlen(" "), "text/html");
break;
default:
break;
}
-
+
camel_multipart_set_boundary (multipart, NULL);
camel_multipart_add_part (multipart, part);
camel_object_unref (part);
@@ -312,7 +303,7 @@ groupwise_msg_set_recipient_list (CamelM
GSList *rl;
char *status_opt = NULL;
gboolean enabled;
-
+
for (rl = recipient_list ; rl != NULL ; rl = rl->next) {
EGwItemRecipient *recp = (EGwItemRecipient *) rl->data;
enabled = recp->status_enabled;
@@ -322,7 +313,7 @@ groupwise_msg_set_recipient_list (CamelM
} else {
ha=camel_header_address_new_name(recp->display_name,recp->email);
}
-
+
if (recp->type == E_GW_ITEM_RECIPIENT_TO) {
if (recp->status_enabled)
status_opt = g_strconcat (status_opt ? status_opt : "" , "TO", ";",NULL);
@@ -331,7 +322,7 @@ groupwise_msg_set_recipient_list (CamelM
if (recp->status_enabled)
status_opt = g_strconcat (status_opt ? status_opt : "", "CC", ";",NULL);
camel_header_address_list_append(&cc_list,ha);
-
+
} else if (recp->type == E_GW_ITEM_RECIPIENT_BC) {
if (recp->status_enabled)
status_opt = g_strconcat (status_opt ? status_opt : "", "BCC", ";",NULL);
@@ -341,17 +332,17 @@ groupwise_msg_set_recipient_list (CamelM
}
if (recp->status_enabled) {
status_opt = g_strconcat (status_opt,
- recp->display_name,";",
- recp->email,";",
- recp->delivered_date ? recp->delivered_date : "", ";",
- recp->opened_date ? recp->opened_date : "", ";",
- recp->accepted_date ? recp->accepted_date : "", ";",
- recp->deleted_date ? recp->deleted_date : "", ";",
- recp->declined_date ? recp->declined_date : "", ";",
- recp->completed_date ? recp->completed_date : "", ";",
- recp->undelivered_date ? recp->undelivered_date : "", ";",
- "::", NULL);
-
+ recp->display_name,";",
+ recp->email,";",
+ recp->delivered_date ? recp->delivered_date : "", ";",
+ recp->opened_date ? recp->opened_date : "", ";",
+ recp->accepted_date ? recp->accepted_date : "", ";",
+ recp->deleted_date ? recp->deleted_date : "", ";",
+ recp->declined_date ? recp->declined_date : "", ";",
+ recp->completed_date ? recp->completed_date : "", ";",
+ recp->undelivered_date ? recp->undelivered_date : "", ";",
+ "::", NULL);
+
}
}
if (enabled) {
@@ -382,11 +373,11 @@ groupwise_msg_set_recipient_list (CamelM
}
if (org) {
- if (org->display_name && org->email) {
+ if (org->display_name && org->email)
ha=camel_header_address_new_name(org->display_name,org->email);
- } else {
+ else
ha=camel_header_address_new_group(org->display_name);
- }
+
subs_email=camel_header_address_list_encode(ha);
camel_medium_set_header( CAMEL_MEDIUM(msg), "From", subs_email);
camel_header_address_unref(ha);
@@ -394,7 +385,6 @@ groupwise_msg_set_recipient_list (CamelM
}
}
-
static void
groupwise_folder_rename (CamelFolder *folder, const char *new)
{
@@ -432,12 +422,12 @@ groupwise_folder_search_by_expression (C
{
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
GPtrArray *matches;
-
+
CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_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);
-
+
return matches;
}
@@ -449,7 +439,7 @@ groupwise_folder_search_by_uids(CamelFol
if (uids->len == 0)
return g_ptr_array_new();
-
+
CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_lock);
camel_folder_search_set_folder(gw_folder->search, folder);
@@ -464,7 +454,7 @@ static void
groupwise_folder_search_free (CamelFolder *folder, GPtrArray *uids)
{
CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
-
+
g_return_if_fail (gw_folder->search);
CAMEL_GROUPWISE_FOLDER_LOCK(folder, search_lock);
@@ -472,7 +462,7 @@ groupwise_folder_search_free (CamelFolde
camel_folder_search_free_result (gw_folder->search, uids);
CAMEL_GROUPWISE_FOLDER_UNLOCK(gw_folder, search_lock);
-
+
}
/******************* functions specific to Junk Mail Handling**************/
@@ -532,10 +522,10 @@ move_to_mailbox (CamelFolder *folder, Ca
CamelFolder *dest;
GPtrArray *uids;
const char *uid = camel_message_info_uid (info);
-
+
uids = g_ptr_array_new ();
g_ptr_array_add (uids, (gpointer) uid);
-
+
dest = camel_store_get_folder (folder->parent_store, "Mailbox", 0, ex);
if (dest)
groupwise_transfer_messages_to (folder, uids, dest, NULL, TRUE, ex);
@@ -552,10 +542,10 @@ move_to_junk (CamelFolder *folder, Camel
CamelFolderInfo *fi;
GPtrArray *uids;
const char *uid = camel_message_info_uid (info);
-
+
uids = g_ptr_array_new ();
g_ptr_array_add (uids, (gpointer) uid);
-
+
dest = camel_store_get_folder (folder->parent_store, JUNK_FOLDER, 0, ex);
if (dest)
groupwise_transfer_messages_to (folder, uids, dest, NULL, TRUE, ex);
@@ -567,9 +557,9 @@ move_to_junk (CamelFolder *folder, Camel
else
groupwise_transfer_messages_to (folder, uids, dest, NULL, TRUE, ex);
}
-
+
update_junk_list (folder->parent_store, info, ADD_JUNK_ENTRY);
-
+
}
/********************* back to folder functions*************************/
@@ -597,12 +587,12 @@ groupwise_sync (CamelFolder *folder, gbo
int count, i;
if (((CamelOfflineStore *) gw_store)->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL ||
- ((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
+ ((CamelService *)gw_store)->status == CAMEL_SERVICE_DISCONNECTED) {
groupwise_sync_summary (folder, ex);
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);
@@ -619,7 +609,7 @@ groupwise_sync (CamelFolder *folder, gbo
guint32 flags = 0;
info = camel_folder_summary_index (folder->summary, i);
gw_info = (CamelGroupwiseMessageInfo *) info;
-
+
/**Junk Mail handling**/
if(!info)
continue;
@@ -680,8 +670,6 @@ groupwise_sync (CamelFolder *folder, gbo
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
}
-
-
CamelFolder *
camel_gw_folder_new(CamelStore *store, const char *folder_name, const char *folder_dir, CamelException *ex)
{
@@ -707,11 +695,11 @@ camel_gw_folder_new(CamelStore *store, c
if (!folder->summary) {
camel_object_unref (CAMEL_OBJECT (folder));
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not load summary for %s"),
- folder_name);
+ _("Could not load summary for %s"),
+ folder_name);
return NULL;
}
-
+
/* set/load persistent state */
state_file = g_strdup_printf ("%s/cmeta", folder_dir);
camel_object_set(folder, NULL, CAMEL_OBJECT_STATE_FILE, state_file, NULL);
@@ -736,13 +724,13 @@ camel_gw_folder_new(CamelStore *store, c
if (camel_url_get_param (((CamelService *) store)->url, "filter"))
folder->folder_flags |= CAMEL_FOLDER_FILTER_RECENT;
}
-
+
gw_folder->search = camel_folder_search_new ();
if (!gw_folder->search) {
camel_object_unref (folder);
return NULL;
}
-
+
return folder;
}
@@ -756,7 +744,6 @@ struct _folder_update_msg {
GSList *slist;
};
-
static void
update_update (CamelSession *session, CamelSessionThreadMsg *msg)
{
@@ -786,16 +773,16 @@ update_update (CamelSession *session, Ca
e_gw_connection_destroy_cursor (m->cnc, m->container_id, cursor);
return;
}
-
+
if (!item_list || g_list_length (item_list) == 0)
done = TRUE;
else {
-
+
/* 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;
@@ -811,21 +798,21 @@ update_update (CamelSession *session, Ca
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;
- }
+ 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';
+ }*/
- 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);
}
@@ -919,7 +906,7 @@ groupwise_refresh_folder(CamelFolder *fo
if (camel_folder_is_frozen (folder) ) {
gw_folder->need_refresh = TRUE;
}
-
+
CAMEL_SERVICE_LOCK (gw_store, connect_lock);
if (!camel_groupwise_store_connected (gw_store, ex))
@@ -965,43 +952,43 @@ 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);*/
+ 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;
-
+
g_slist_free (slist);
slist = NULL;
t_str = g_strdup (time_string);
-
+
/*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);
-
+
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)
+ /* 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);
@@ -1012,12 +999,12 @@ 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);
}
-
-
+
+
CAMEL_SERVICE_UNLOCK (gw_store, connect_lock);
is_locked = FALSE;
@@ -1029,15 +1016,15 @@ groupwise_refresh_folder(CamelFolder *fo
*/
/*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);
- msg->container_id = g_strdup (container_id);
- msg->folder = folder;
- camel_object_ref (folder);
- camel_folder_freeze (folder);
- camel_session_thread_queue (session, &msg->msg, 0);
- /*thread creation and queueing done*/
+ msg = camel_session_thread_msg_new (session, &update_ops, sizeof(*msg));
+ msg->cnc = cnc;
+ msg->t_str = g_strdup (time_string);
+ msg->container_id = g_strdup (container_id);
+ msg->folder = folder;
+ camel_object_ref (folder);
+ camel_folder_freeze (folder);
+ camel_session_thread_queue (session, &msg->msg, 0);
+ /*thread creation and queueing done*/
}
end3:
@@ -1074,9 +1061,9 @@ gw_update_cache (CamelFolder *folder, GL
EGwItemStatus status;
GList *item_list = list;
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) {
@@ -1084,7 +1071,7 @@ gw_update_cache (CamelFolder *folder, GL
camel_folder_change_info_free (changes);
return;
}
-
+
if (!strcmp (folder->full_name, JUNK_FOLDER)) {
is_junk = TRUE;
}
@@ -1105,7 +1092,7 @@ gw_update_cache (CamelFolder *folder, GL
gboolean is_sent_folder = FALSE;
exists = FALSE;
-
+
if (uid_flag == FALSE) {
temp_item = (EGwItem *)item_list->data;
id = e_gw_item_get_id (temp_item);
@@ -1173,7 +1160,7 @@ gw_update_cache (CamelFolder *folder, GL
EGwItemAttachment *attach = (EGwItemAttachment *)al->data;
if (!g_ascii_strcasecmp (attach->name, "Mime.822") ||
- !g_ascii_strcasecmp (attach->name, "TEXT.htm"))
+ !g_ascii_strcasecmp (attach->name, "TEXT.htm"))
has_attachments = FALSE;
if (has_attachments)
@@ -1208,10 +1195,10 @@ gw_update_cache (CamelFolder *folder, GL
mi->info.to = camel_pstring_strdup (str->str);
g_string_truncate (str, 0);
}
-
+
if (type == E_GW_ITEM_TYPE_APPOINTMENT
- || type == E_GW_ITEM_TYPE_NOTE
- || type == E_GW_ITEM_TYPE_TASK ) {
+ || type == E_GW_ITEM_TYPE_NOTE
+ || type == E_GW_ITEM_TYPE_TASK ) {
temp_date = e_gw_item_get_start_date (item);
if (temp_date) {
time_t time = e_gw_connection_get_date_from_string (temp_date);
@@ -1233,13 +1220,13 @@ gw_update_cache (CamelFolder *folder, GL
mi->info.date_sent = mi->info.date_received = actual_time;
}
}
-
+
if (!exists) {
mi->info.uid = g_strdup (e_gw_item_get_id(item));
mi->info.size = e_gw_item_get_mail_size (item);
mi->info.subject = camel_pstring_strdup(e_gw_item_get_subject(item));
}
-
+
if (exists) {
camel_folder_change_info_change_uid (changes, mi->info.uid);
camel_message_info_free (pmi);
@@ -1260,7 +1247,7 @@ gw_update_cache (CamelFolder *folder, GL
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));
@@ -1300,7 +1287,7 @@ gw_update_summary ( CamelFolder *folder,
char *container_id = NULL;
gboolean is_junk = FALSE;
GList *item_list = list;
-
+
/*Assert lock???*/
changes = camel_folder_change_info_new ();
container_id = g_strdup (camel_groupwise_store_container_id_lookup (gw_store, folder->full_name));
@@ -1309,7 +1296,7 @@ gw_update_summary ( CamelFolder *folder,
camel_folder_change_info_free (changes);
return;
}
-
+
if (!strcmp (folder->full_name, JUNK_FOLDER)) {
is_junk = TRUE;
}
@@ -1324,7 +1311,7 @@ gw_update_summary ( CamelFolder *folder,
status_flags = 0;
id = e_gw_item_get_id (item);
-
+
mi = (CamelGroupwiseMessageInfo *)camel_folder_summary_uid (folder->summary, id);
if (mi)
exists = TRUE;
@@ -1352,13 +1339,13 @@ gw_update_summary ( CamelFolder *folder,
status_flags |= CAMEL_MESSAGE_SEEN;
if (item_status & E_GW_ITEM_STAT_REPLIED)
status_flags |= CAMEL_MESSAGE_ANSWERED;
-
+
if (!strcmp (folder->full_name, "Trash"))
status_flags |= CAMEL_MESSAGE_SEEN;
-
+
mi->info.flags |= status_flags;
-
+
priority = e_gw_item_get_priority (item);
if (priority && !(g_ascii_strcasecmp (priority,"High"))) {
mi->info.flags |= CAMEL_MESSAGE_FLAGGED;
@@ -1371,7 +1358,7 @@ gw_update_summary ( CamelFolder *folder,
EGwItemAttachment *attach = (EGwItemAttachment *)al->data;
if (!g_ascii_strcasecmp (attach->name, "Mime.822") ||
- !g_ascii_strcasecmp (attach->name, "TEXT.htm"))
+ !g_ascii_strcasecmp (attach->name, "TEXT.htm"))
has_attachments = FALSE;
if (has_attachments)
@@ -1402,10 +1389,10 @@ gw_update_summary ( CamelFolder *folder,
mi->info.to = camel_pstring_strdup (str->str);
g_string_truncate (str, 0);
}
-
+
if (type == E_GW_ITEM_TYPE_APPOINTMENT
- || type == E_GW_ITEM_TYPE_NOTE
- || type == E_GW_ITEM_TYPE_TASK ) {
+ || type == E_GW_ITEM_TYPE_NOTE
+ || type == E_GW_ITEM_TYPE_TASK ) {
temp_date = e_gw_item_get_start_date (item);
if (temp_date) {
time_t time = e_gw_connection_get_date_from_string (temp_date);
@@ -1432,7 +1419,7 @@ gw_update_summary ( CamelFolder *folder,
if (!exists)
mi->info.size = e_gw_item_get_mail_size (item);
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);
@@ -1485,8 +1472,9 @@ groupwise_folder_item_to_msg( CamelFolde
int len = 0;
if (!g_ascii_strcasecmp (attach->name, "Mime.822") ||
- !g_ascii_strcasecmp (attach->name, "TEXT.htm")) {
-
+ !g_ascii_strcasecmp (attach->name, "TEXT.htm") ||
+ !g_ascii_strcasecmp (attach->name, "Header")) {
+
status = e_gw_connection_get_attachment (cnc,
attach->id, 0, -1,
(const char **)&attachment, &len);
@@ -1541,7 +1529,7 @@ groupwise_folder_item_to_msg( CamelFolde
}
groupwise_populate_msg_body_from_item (cnc, multipart, item, body);
-
+
/*Set recipient details*/
groupwise_msg_set_recipient_list (msg, item);
groupwise_populate_details_from_item (msg, item);
@@ -1561,9 +1549,10 @@ groupwise_folder_item_to_msg( CamelFolde
if (attach->contentid && (is_text_html_embed != TRUE))
is_text_html_embed = TRUE;
if ( !g_ascii_strcasecmp (attach->name, "TEXT.htm") ||
- !g_ascii_strcasecmp (attach->name, "Mime.822"))
+ !g_ascii_strcasecmp (attach->name, "Mime.822") ||
+ !g_ascii_strcasecmp (attach->name, "Header"))
continue;
-
+
if ( (attach->item_reference) && (!g_ascii_strcasecmp (attach->item_reference, "1")) ) {
CamelMimeMessage *temp_msg = NULL;
status = e_gw_connection_get_item (cnc, container_id, attach->id, "default distribution recipient message attachments subject notification created recipientStatus status startDate", &temp_item);
@@ -1589,7 +1578,7 @@ groupwise_folder_item_to_msg( CamelFolde
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;
@@ -1627,7 +1616,6 @@ groupwise_folder_item_to_msg( CamelFolde
camel_content_type_set_param(CAMEL_DATA_WRAPPER (multipart)->mime_type, "type", "multipart/alternative");
if (attach->contentid) {
gchar **t;
- //strip_lt_gt ((char **)&attach->contentid, 1, 2);
t= g_strsplit_set (attach->contentid, "<>", -1);
if (!t[1])
camel_mime_part_set_content_id (part, attach->contentid);
@@ -1637,13 +1625,13 @@ groupwise_folder_item_to_msg( CamelFolde
camel_mime_part_set_content_location (part, attach->name);
}
} else if (attach->contentType &&
- !strcmp (attach->contentType, "application/pgp-signature")) {
+ !strcmp (attach->contentType, "application/pgp-signature")) {
camel_mime_part_set_filename(part, g_strdup(attach->name));
camel_data_wrapper_set_mime_type(CAMEL_DATA_WRAPPER (multipart), "multipart/signed");
has_boundary = TRUE;
camel_content_type_set_param(CAMEL_DATA_WRAPPER (multipart)->mime_type, "protocol", attach->contentType);
} else if (attach->contentType &&
- !strcmp (attach->contentType, "application/pgp-encrypted")) {
+ !strcmp (attach->contentType, "application/pgp-encrypted")) {
camel_mime_part_set_filename(part, g_strdup(attach->name));
camel_data_wrapper_set_mime_type(CAMEL_DATA_WRAPPER (multipart), "multipart/encrypted");
has_boundary = TRUE;
@@ -1659,8 +1647,9 @@ groupwise_folder_item_to_msg( CamelFolde
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
- camel_mime_part_set_content(part, attachment, len, "");
+ } else {
+ camel_mime_part_set_content(part, attachment, len, "text/plain");
+ }
if (!has_boundary)
camel_data_wrapper_set_mime_type(CAMEL_DATA_WRAPPER (multipart),"multipart/digest");
@@ -1698,13 +1687,13 @@ gw_update_all_items (CamelFolder *folder
changes = camel_folder_change_info_new ();
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);
temp = NULL;
-
+
if (item_list) {
temp = g_list_find_custom (item_list, (const char *)info->uid, (GCompareFunc) strcmp);
}
@@ -1720,7 +1709,7 @@ gw_update_all_items (CamelFolder *folder
}
index ++;
}
-
+
camel_object_trigger_event (folder, "folder_changed", changes);
if (item_list) {
@@ -1729,11 +1718,11 @@ gw_update_all_items (CamelFolder *folder
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);
}
@@ -1752,7 +1741,7 @@ groupwise_append_message (CamelFolder *f
EGwItem *item;
char *id;
gboolean is_ok = FALSE;
-
+
if (!strcmp (folder->name, RECEIVED))
is_ok = TRUE;
if(!strcmp (folder->name, SENT))
@@ -1783,20 +1772,20 @@ groupwise_append_message (CamelFolder *f
item = camel_groupwise_util_item_from_message (cnc, message, CAMEL_ADDRESS (message->from), recipients);
/*Set the source*/
if (!strcmp (folder->name, RECEIVED))
- e_gw_item_set_source (item, "received");
+ e_gw_item_set_source (item, "received");
if (!strcmp (folder->name, SENT))
- e_gw_item_set_source (item, "sent");
+ e_gw_item_set_source (item, "sent");
if (!strcmp (folder->name, DRAFT))
- e_gw_item_set_source (item, "draft");
+ e_gw_item_set_source (item, "draft");
if (!strcmp (folder->name, PERSONAL))
- e_gw_item_set_source (item, "personal");
+ e_gw_item_set_source (item, "personal");
/*set container id*/
e_gw_item_set_container_id (item, container_id);
status = e_gw_connection_create_item (cnc, item, &id);
if (status != E_GW_CONNECTION_STATUS_OK) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot create message: %s"),
- e_gw_connection_get_error_message (status));
+ e_gw_connection_get_error_message (status));
if (appended_uid)
*appended_uid = NULL;
@@ -1808,7 +1797,7 @@ groupwise_append_message (CamelFolder *f
g_message ("Adding %s to %s", id, container_id);
if (status != E_GW_CONNECTION_STATUS_OK) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot append message to folder `%s': %s"),
- folder->full_name, e_gw_connection_get_error_message (status));
+ folder->full_name, e_gw_connection_get_error_message (status));
if (appended_uid)
*appended_uid = NULL;
@@ -1841,8 +1830,8 @@ uid_compar (const void *va, const void *
static void
groupwise_transfer_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, GPtrArray **transferred_uids,
- gboolean delete_originals, CamelException *ex)
+ CamelFolder *destination, GPtrArray **transferred_uids,
+ gboolean delete_originals, CamelException *ex)
{
int count, index = 0;
GList *item_ids = NULL;
@@ -1853,8 +1842,8 @@ groupwise_transfer_messages_to (CamelFol
EGwConnectionStatus status;
EGwConnection *cnc;
- count = camel_folder_summary_count (destination->summary);
- qsort (uids->pdata, uids->len, sizeof (void *), uid_compar);
+ count = camel_folder_summary_count (destination->summary);
+ qsort (uids->pdata, uids->len, sizeof (void *), uid_compar);
while (index < uids->len) {
item_ids = g_list_append (item_ids, g_ptr_array_index (uids, index));
@@ -1869,7 +1858,7 @@ groupwise_transfer_messages_to (CamelFol
else
source_container_id = NULL;
dest_container_id = camel_groupwise_store_container_id_lookup (gw_store, destination->full_name) ;
-
+
CAMEL_SERVICE_LOCK (source->parent_store, connect_lock);
/* check for offline operation */
if (offline->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
@@ -1877,22 +1866,22 @@ groupwise_transfer_messages_to (CamelFol
CamelMimeMessage *message;
GList *l;
int i;
-
+
for (l = item_ids, i = 0; l; l = l->next, i++) {
CamelMessageInfo *info;
if (!(info = camel_folder_summary_uid (source->summary, uids->pdata[i])))
continue;
-
+
if (!(message = groupwise_folder_get_message (source, camel_message_info_uid (info), ex)))
break;
-
+
camel_groupwise_journal_transfer (journal, (CamelGroupwiseFolder *)source, message, info, uids->pdata[i], NULL, ex);
camel_object_unref (message);
-
+
if (camel_exception_is_set (ex))
break;
-
+
if (delete_originals)
camel_folder_delete_message(source, camel_message_info_uid (info));
}
@@ -1900,7 +1889,7 @@ groupwise_transfer_messages_to (CamelFol
CAMEL_SERVICE_UNLOCK (source->parent_store, connect_lock);
return;
}
-
+
cnc = cnc_lookup (priv);
index = 0;
@@ -1949,8 +1938,8 @@ groupwise_expunge (CamelFolder *folder,
CamelFolderChangeInfo *changes;
int i, max;
gboolean delete = FALSE;
-
-
+
+
cnc = cnc_lookup (priv);
if (!cnc)
return;
@@ -1967,9 +1956,9 @@ groupwise_expunge (CamelFolder *folder,
CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
return;
}
-
+
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);
@@ -1996,20 +1985,19 @@ groupwise_expunge (CamelFolder *folder,
if (delete)
camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
-
-
+
+
g_free (container_id);
camel_folder_change_info_free (changes);
}
-
static void
camel_groupwise_folder_class_init (CamelGroupwiseFolderClass *camel_groupwise_folder_class)
{
CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS (camel_groupwise_folder_class);
-
+
parent_class = CAMEL_OFFLINE_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_offline_folder_get_type ()));
-
+
((CamelObjectClass *) camel_groupwise_folder_class)->getv = gw_getv;
camel_folder_class->get_message = groupwise_folder_get_message;
@@ -2035,7 +2023,7 @@ camel_groupwise_folder_init (gpointer ob
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
@@ -2063,20 +2051,20 @@ 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 =
camel_type_register (camel_offline_folder_get_type (),
- "CamelGroupwiseFolder",
- sizeof (CamelGroupwiseFolder),
- sizeof (CamelGroupwiseFolderClass),
- (CamelObjectClassInitFunc) camel_groupwise_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_groupwise_folder_init,
- (CamelObjectFinalizeFunc) camel_groupwise_folder_finalize);
+ "CamelGroupwiseFolder",
+ sizeof (CamelGroupwiseFolder),
+ sizeof (CamelGroupwiseFolderClass),
+ (CamelObjectClassInitFunc) camel_groupwise_folder_class_init,
+ NULL,
+ (CamelObjectInitFunc) camel_groupwise_folder_init,
+ (CamelObjectFinalizeFunc) camel_groupwise_folder_finalize);
}
-
+
return camel_groupwise_folder_type;
}
@@ -2086,7 +2074,7 @@ gw_getv (CamelObject *object, CamelExcep
CamelFolder *folder = (CamelFolder *)object;
int i, count = 0;
guint32 tag;
-
+
for (i=0 ; i<args->argc ; i++) {
CamelArgGet *arg = &args->argv[i];
@@ -2114,7 +2102,7 @@ gw_getv (CamelObject *object, CamelExcep
return ((CamelObjectClass *)parent_class)->getv(object, ex, args);
return 0;
-
+
}
void
@@ -2133,7 +2121,7 @@ convert_to_calendar (EGwItem *item, char
gstr = g_string_append (gstr, "BEGIN:VCALENDAR\n");
gstr = g_string_append (gstr, "METHOD:REQUEST\n");
gstr = g_string_append (gstr, "BEGIN:VEVENT\n");
-
+
if ((recur_key = e_gw_item_get_recurrence_key (item)) != 0) {
char *recur_k = g_strdup_printf ("%d", recur_key);
@@ -2147,7 +2135,7 @@ convert_to_calendar (EGwItem *item, char
g_string_append_printf (gstr, "X-GWITEM-TYPE:APPOINTMENT\n");
g_string_append_printf (gstr, "DTSTART:%s\n",e_gw_item_get_start_date (item));
g_string_append_printf (gstr, "SUMMARY:%s\n", e_gw_item_get_subject (item));
-
+
temp = e_gw_item_get_message (item);
if (temp) {
g_string_append(gstr, "DESCRIPTION:");
@@ -2169,8 +2157,8 @@ convert_to_calendar (EGwItem *item, char
org = e_gw_item_get_organizer (item);
if (org)
g_string_append_printf (gstr, "ORGANIZER;CN= %s;ROLE= CHAIR;\n MAILTO:%s\n",
- org->display_name, org->email);
-
+ org->display_name, org->email);
+
recp_list = e_gw_item_get_recipient_list (item);
if (recp_list) {
GSList *rl ;
@@ -2182,14 +2170,14 @@ convert_to_calendar (EGwItem *item, char
recp->display_name, recp->email);
}
}
-
+
g_string_append_printf (gstr, "DTEND:%s\n", e_gw_item_get_end_date (item));
temp = NULL;
temp = e_gw_item_get_place (item);
if (temp)
g_string_append_printf (gstr, "LOCATION:%s\n", temp);
-
+
temp = NULL;
temp = e_gw_item_get_task_priority (item);
if (temp)
@@ -2207,10 +2195,10 @@ convert_to_calendar (EGwItem *item, char
}
gstr = g_string_append (gstr, "END:VEVENT\n");
gstr = g_string_append (gstr, "END:VCALENDAR\n");
-
+
*str = gstr->str;
*len = gstr->len;
-
+
g_string_free (gstr, FALSE);
g_strfreev (tmp);
}
@@ -2223,7 +2211,7 @@ convert_to_task (EGwItem *item, char **s
GString *gstr = g_string_new (NULL);
char **tmp = NULL;
const char *temp = NULL;
-
+
tmp = g_strsplit (e_gw_item_get_id (item), "@", -1);
gstr = g_string_append (gstr, "BEGIN:VCALENDAR\n");
@@ -2241,8 +2229,8 @@ convert_to_task (EGwItem *item, char **s
org = e_gw_item_get_organizer (item);
if (org)
g_string_append_printf (gstr, "ORGANIZER;CN= %s;ROLE= CHAIR;\n MAILTO:%s\n",
- org->display_name, org->email);
-
+ org->display_name, org->email);
+
recp_list = e_gw_item_get_recipient_list (item);
if (recp_list) {
GSList *rl;
@@ -2254,13 +2242,13 @@ convert_to_task (EGwItem *item, char **s
recp->display_name, recp->email);
}
}
-
+
g_string_append_printf (gstr, "DTEND:%s\n", e_gw_item_get_end_date (item));
temp = e_gw_item_get_place (item);
if (temp)
g_string_append_printf (gstr, "LOCATION:%s\n", temp);
-
+
temp = NULL;
temp = e_gw_item_get_task_priority (item);
if (temp)
@@ -2272,13 +2260,13 @@ convert_to_task (EGwItem *item, char **s
g_string_append_printf (gstr, "DUE:%s\n", temp);
gstr = g_string_append (gstr, "END:VTODO\n");
gstr = g_string_append (gstr, "END:VCALENDAR\n");
-
+
*str = g_strdup (gstr->str);
*len = gstr->len;
-
+
g_string_free (gstr, TRUE);
g_strfreev (tmp);
}
-
+/** End **/