Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:Test
evolution-data-server
bnc-465364-msg-list-time.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bnc-465364-msg-list-time.patch of Package evolution-data-server
diff --git a/camel/providers/groupwise/camel-groupwise-folder.c b/camel/providers/groupwise/camel-groupwise-folder.c index ad3cd5c..faefe12 100644 --- a/camel/providers/groupwise/camel-groupwise-folder.c +++ b/camel/providers/groupwise/camel-groupwise-folder.c @@ -222,17 +222,27 @@ groupwise_folder_get_message( CamelFolder *folder, const char *uid, CamelExcepti static void groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item) { + EGwItemType type; char *dtstring = NULL; char *temp_str = NULL; temp_str = (char *)e_gw_item_get_subject(item); if(temp_str) camel_mime_message_set_subject (msg, temp_str); + type = e_gw_item_get_item_type (item); + + if (type == E_GW_ITEM_TYPE_APPOINTMENT || type == E_GW_ITEM_TYPE_NOTE || type == E_GW_ITEM_TYPE_TASK) { + int offset = 0; + dtstring = e_gw_item_get_start_date (item); + time_t actual_time = e_gw_connection_get_date_from_string (dtstring); + camel_mime_message_set_date (msg, actual_time, offset); + return; + } + dtstring = e_gw_item_get_delivered_date (item); if(dtstring) { int offset = 0; - time_t time = e_gw_connection_get_date_from_string (dtstring); - time_t actual_time = camel_header_decode_date (ctime(&time), &offset); + time_t actual_time = e_gw_connection_get_date_from_string (dtstring); camel_mime_message_set_date (msg, actual_time, offset); } else { time_t time; @@ -240,8 +250,7 @@ groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item) int offset = 0; dtstring = e_gw_item_get_creation_date (item); if (dtstring) { - time = e_gw_connection_get_date_from_string (dtstring); - actual_time = camel_header_decode_date (ctime(&time), NULL); + actual_time = e_gw_connection_get_date_from_string (dtstring); } else actual_time = (time_t) 0; camel_mime_message_set_date (msg, actual_time, offset); @@ -1473,24 +1482,20 @@ gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean || 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); - time_t actual_time = camel_header_decode_date (ctime(&time), NULL); + time_t actual_time = e_gw_connection_get_date_from_string (temp_date); mi->info.date_sent = mi->info.date_received = actual_time; } } else { temp_date = e_gw_item_get_delivered_date(item); if (temp_date) { - time_t time = e_gw_connection_get_date_from_string (temp_date); - time_t actual_time = camel_header_decode_date (ctime(&time), NULL); + time_t actual_time = e_gw_connection_get_date_from_string (temp_date); mi->info.date_sent = mi->info.date_received = actual_time; } else { - time_t time; time_t actual_time; temp_date = e_gw_item_get_creation_date (item); 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); + actual_time = e_gw_connection_get_date_from_string (temp_date); } else actual_time = (time_t) 0; mi->info.date_sent = mi->info.date_received = actual_time; @@ -1694,23 +1699,19 @@ gw_update_summary ( CamelFolder *folder, GList *list,CamelException *ex) 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); - time_t actual_time = camel_header_decode_date (ctime(&time), NULL); + time_t actual_time = e_gw_connection_get_date_from_string (temp_date); mi->info.date_sent = mi->info.date_received = actual_time; } } else { temp_date = e_gw_item_get_delivered_date(item); if (temp_date) { - time_t time = e_gw_connection_get_date_from_string (temp_date); - time_t actual_time = camel_header_decode_date (ctime(&time), NULL); + time_t actual_time = e_gw_connection_get_date_from_string (temp_date); mi->info.date_sent = mi->info.date_received = actual_time; } else { - time_t time; time_t actual_time; temp_date = e_gw_item_get_creation_date (item); if (temp_date) { - time = e_gw_connection_get_date_from_string (temp_date); - actual_time = camel_header_decode_date (ctime(&time), NULL); + actual_time = e_gw_connection_get_date_from_string (temp_date); } else actual_time = (time_t) 0; mi->info.date_sent = mi->info.date_received = actual_time; diff --git a/servers/groupwise/e-gw-connection.c b/servers/groupwise/e-gw-connection.c index 0f5336a..d90193a 100644 --- a/servers/groupwise/e-gw-connection.c +++ b/servers/groupwise/e-gw-connection.c @@ -1810,46 +1810,6 @@ e_gw_connection_get_server_time (EGwConnection *cnc) return (const char *) cnc->priv->server_time ; } -static time_t -timet_from_string (const char *str) -{ - struct tm date; - int len, i; - - g_return_val_if_fail (str != NULL, -1); - - /* yyyymmdd[Thhmmss[Z]] */ - len = strlen (str); - - 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; - -#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_wday = date.tm_yday = date.tm_isdst = 0; - - return mktime (&date); -} - char * e_gw_connection_format_date_string (const char *dtstring) { @@ -1874,24 +1834,35 @@ e_gw_connection_format_date_string (const char *dtstring) time_t e_gw_connection_get_date_from_string (const char *dtstring) { - char *str2; - int i, j, len; - time_t t; + time_t t = 0; + GTimeVal t_val; g_return_val_if_fail (dtstring != NULL, 0); - len = strlen (dtstring); - str2 = g_malloc0 (len+1); - for (i = 0,j = 0; i < len; i++) { - if ((dtstring[i] != '-') && (dtstring[i] != ':')) { - str2[j] = dtstring[i]; - j++; - } - } + if (g_time_val_from_iso8601 (dtstring, &t_val)) { + t = (time_t) t_val.tv_sec; + } else if (strlen (dtstring) == 8) { + /* It might be a date value */ + GDate date; + struct tm tt; - str2[j] = '\0'; - t = timet_from_string (str2); - g_free (str2); + g_date_clear (&date, 1); +#define digit_at(x,y) (x[y] - '0') + guint16 year = digit_at (dtstring, 0) * 1000 + + digit_at (dtstring, 1) * 100 + + digit_at (dtstring, 2) * 10 + + digit_at (dtstring, 3); + guint month = digit_at (dtstring, 4) * 10 + digit_at (dtstring, 5); + guint8 day = digit_at (dtstring, 6) * 10 + digit_at (dtstring, 7); + g_date_set_year (&date, year); + g_date_set_month (&date, month); + g_date_set_day (&date, day); + + g_date_to_struct_tm (&date, &tt); + t = mktime (&tt); + + } else + g_warning ("Could not parse the string \n"); return t; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor