X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-text-utils.c;h=cfa6414d7e152b4f9498b78017b39367137c317b;hb=7b3c6e37a83d1cbf2fc3883e804afe486f75ebac;hp=6e22878eacdfd15d075894989f626c4eab95e0f6;hpb=3189365f23efe0f421cd520ce25a0b2427ebea06;p=modest diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index 6e22878..cfa6414 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -205,7 +205,11 @@ modest_text_utils_strftime(char *s, gsize max, const char *fmt, time_t timet) { static GDate date; - g_date_set_time_t (&date, timet); + /* does not work on old maemo glib: + * g_date_set_time_t (&date, timet); + */ + g_date_set_time (&date, (GTime) timet); + return g_date_strftime (s, max, fmt, (const GDate*) &date); } @@ -329,6 +333,87 @@ modest_text_utils_convert_to_html (const gchar *data) return g_string_free (html, FALSE); } +GSList * +modest_text_utils_split_addresses_list (const gchar *addresses) +{ + gchar *current, *start, *last_blank; + GSList *result = NULL; + + start = (gchar *) addresses; + current = start; + last_blank = start; + + while (*current != '\0') { + if ((start == current)&&((*current == ' ')||(*current == ','))) { + start++; + last_blank = current; + } else if (*current == ',') { + gchar *new_address = NULL; + new_address = g_strndup (start, current - last_blank); + result = g_slist_prepend (result, new_address); + start = current + 1; + last_blank = start; + } else if (*current == '\"') { + if (current == start) { + current++; + start++; + } + while ((*current != '\"')&&(*current != '\0')) + current++; + } + + current++; + } + + if (start != current) { + gchar *new_address = NULL; + new_address = g_strndup (start, current - last_blank); + result = g_slist_prepend (result, new_address); + } + + result = g_slist_reverse (result); + return result; + +} + +void +modest_text_utils_address_range_at_position (const gchar *recipients_list, + gint position, + gint *start, + gint *end) +{ + gchar *current = NULL; + gint range_start = 0; + gint range_end = 0; + gint index; + gboolean is_quoted = FALSE; + + index = 0; + for (current = (gchar *) recipients_list; *current != '\0'; current = g_utf8_find_next_char (current, NULL)) { + gunichar c = g_utf8_get_char (current); + + if ((c == ',') && (!is_quoted)) { + if (index < position) { + range_start = index + 1; + } else { + break; + } + } else if (c == '\"') { + is_quoted = !is_quoted; + } else if ((c == ' ') &&(range_start == index)) { + range_start ++; + } + index ++; + range_end = index; + } + + if (start) + *start = range_start; + if (end) + *end = range_end; +} + + /* ******************************************************************* */ /* ************************* UTILIY FUNCTIONS ************************ */ /* ******************************************************************* */ @@ -787,7 +872,7 @@ gboolean modest_text_utils_validate_email_address (const gchar *email_address) { int count = 0; - const gchar *c, *domain; + const gchar *c = NULL, *domain = NULL; static gchar *rfc822_specials = "()<>@,;:\\\"[]"; /* first we validate the name portion (name@domain) */