forked from pool/evolution-data-server
138 lines
5.0 KiB
Diff
138 lines
5.0 KiB
Diff
--- camel/providers/groupwise/camel-groupwise-folder.c
|
|
+++ camel/providers/groupwise/camel-groupwise-folder.c
|
|
@@ -229,8 +229,11 @@ groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item)
|
|
time_t actual_time;
|
|
int offset = 0;
|
|
dtstring = e_gw_item_get_creation_date (item);
|
|
- time = e_gw_connection_get_date_from_string (dtstring);
|
|
- actual_time = camel_header_decode_date (ctime(&time), NULL);
|
|
+ if (dtstring) {
|
|
+ time = e_gw_connection_get_date_from_string (dtstring);
|
|
+ actual_time = camel_header_decode_date (ctime(&time), NULL);
|
|
+ } else
|
|
+ actual_time = (time_t) 0;
|
|
camel_mime_message_set_date (msg, actual_time, offset);
|
|
}
|
|
}
|
|
@@ -1270,7 +1273,7 @@ gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean
|
|
|
|
int folder_needs_caching;
|
|
|
|
- camel_object_get (folder, NULL, CAMEL_OFFLINE_FOLDER_ARG_SYNC_OFFLINE, &folder_needs_caching, NULL);
|
|
+ camel_object_get (folder, NULL, CAMEL_OFFLINE_FOLDER_SYNC_OFFLINE, &folder_needs_caching, NULL);
|
|
|
|
changes = camel_folder_change_info_new ();
|
|
container_id = g_strdup (camel_groupwise_store_container_id_lookup (gw_store, folder->full_name));
|
|
@@ -1449,8 +1452,12 @@ gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean
|
|
time_t time;
|
|
time_t actual_time;
|
|
temp_date = e_gw_item_get_creation_date (item);
|
|
- time = e_gw_connection_get_date_from_string (temp_date);
|
|
- actual_time = camel_header_decode_date (ctime(&time), NULL);
|
|
+ if (temp_date) {
|
|
+ /* Creation date can be returned as null for auto-generated meetings */
|
|
+ time = e_gw_connection_get_date_from_string (temp_date);
|
|
+ actual_time = camel_header_decode_date (ctime(&time), NULL);
|
|
+ } else
|
|
+ actual_time = (time_t) 0;
|
|
mi->info.date_sent = mi->info.date_received = actual_time;
|
|
}
|
|
}
|
|
@@ -1670,8 +1677,11 @@ gw_update_summary ( CamelFolder *folder, GList *list,CamelException *ex)
|
|
time_t time;
|
|
time_t actual_time;
|
|
temp_date = e_gw_item_get_creation_date (item);
|
|
- time = e_gw_connection_get_date_from_string (temp_date);
|
|
- actual_time = camel_header_decode_date (ctime(&time), NULL);
|
|
+ if (temp_date) {
|
|
+ time = e_gw_connection_get_date_from_string (temp_date);
|
|
+ actual_time = camel_header_decode_date (ctime(&time), NULL);
|
|
+ } else
|
|
+ actual_time = (time_t) 0;
|
|
mi->info.date_sent = mi->info.date_received = actual_time;
|
|
}
|
|
}
|
|
--- servers/groupwise/e-gw-item.c
|
|
+++ servers/groupwise/e-gw-item.c
|
|
@@ -307,6 +307,11 @@ e_gw_item_dispose (GObject *object)
|
|
priv->classification = NULL;
|
|
}
|
|
|
|
+ if (priv->security) {
|
|
+ g_free (priv->security);
|
|
+ priv->security = NULL;
|
|
+ }
|
|
+
|
|
if (priv->accept_level) {
|
|
g_free (priv->accept_level);
|
|
priv->accept_level = NULL;
|
|
--- servers/groupwise/e-gw-connection.c
|
|
+++ servers/groupwise/e-gw-connection.c
|
|
@@ -1813,39 +1813,41 @@ e_gw_connection_get_server_time (EGwConnection *cnc)
|
|
static time_t
|
|
timet_from_string (const char *str)
|
|
{
|
|
- struct tm date;
|
|
- int len, i;
|
|
+ struct tm date;
|
|
+ int len, i;
|
|
|
|
- g_return_val_if_fail (str != NULL, -1);
|
|
+ g_return_val_if_fail (str != NULL, -1);
|
|
|
|
- /* yyyymmdd[Thhmmss[Z]] */
|
|
- len = strlen (str);
|
|
+ /* yyyymmdd[Thhmmss[Z]] */
|
|
+ len = strlen (str);
|
|
|
|
- if (!(len == 8 || len == 15 || len == 16))
|
|
- return -1;
|
|
+ if (!(len == 8 || len == 15 || len == 16))
|
|
+ return -1;
|
|
|
|
- for (i = 0; i < len; i++)
|
|
- if (!((i != 8 && i != 15 && isdigit (str[i]))
|
|
- || (i == 8 && str[i] == 'T')
|
|
- || (i == 15 && str[i] == 'Z')))
|
|
- return -1;
|
|
+ for (i = 0; i < len; i++)
|
|
+ if (!((i != 8 && i != 15 && isdigit (str[i]))
|
|
+ || (i == 8 && str[i] == 'T')
|
|
+ || (i == 15 && str[i] == 'Z')))
|
|
+ return -1;
|
|
|
|
#define digit_at(x,y) (x[y] - '0')
|
|
|
|
- date.tm_year = digit_at (str, 0) * 1000
|
|
- + digit_at (str, 1) * 100
|
|
- + digit_at (str, 2) * 10
|
|
- + digit_at (str, 3) -1900;
|
|
- date.tm_mon = digit_at (str, 4) * 10 + digit_at (str, 5) -1;
|
|
- date.tm_mday = digit_at (str, 6) * 10 + digit_at (str, 7);
|
|
- if (len > 8) {
|
|
- date.tm_hour = digit_at (str, 9) * 10 + digit_at (str, 10);
|
|
- date.tm_min = digit_at (str, 11) * 10 + digit_at (str, 12);
|
|
- date.tm_sec = digit_at (str, 13) * 10 + digit_at (str, 14);
|
|
- } else
|
|
- date.tm_hour = date.tm_min = date.tm_sec = 0;
|
|
+ date.tm_year = digit_at (str, 0) * 1000
|
|
+ + digit_at (str, 1) * 100
|
|
+ + digit_at (str, 2) * 10
|
|
+ + digit_at (str, 3) -1900;
|
|
+ date.tm_mon = digit_at (str, 4) * 10 + digit_at (str, 5) -1;
|
|
+ date.tm_mday = digit_at (str, 6) * 10 + digit_at (str, 7);
|
|
+ if (len > 8) {
|
|
+ date.tm_hour = digit_at (str, 9) * 10 + digit_at (str, 10);
|
|
+ date.tm_min = digit_at (str, 11) * 10 + digit_at (str, 12);
|
|
+ date.tm_sec = digit_at (str, 13) * 10 + digit_at (str, 14);
|
|
+ } else
|
|
+ date.tm_hour = date.tm_min = date.tm_sec = 0;
|
|
+
|
|
+ date.tm_wday = date.tm_yday = date.tm_isdst = 0;
|
|
|
|
- return mktime (&date);
|
|
+ return mktime (&date);
|
|
}
|
|
|
|
char *
|