Renamed a symbol that has changed in tinymail
[modest] / src / modest-text-utils.c
index 8348b20..52d9ecf 100644 (file)
@@ -1018,12 +1018,15 @@ modest_text_utils_get_display_date (time_t date)
        return g_strdup(date_buf);
 }
 
-gboolean 
-modest_text_utils_validate_email_address (const gchar *email_address)
+gboolean
+modest_text_utils_validate_email_address (const gchar *email_address, const gchar **invalid_char_position)
 {
        int count = 0;
        const gchar *c = NULL, *domain = NULL;
-       static gchar *rfc822_specials = "()<>@,;:\\\"[]";
+       static gchar *rfc822_specials = "()<>@,;:\\\"[]&";
+
+       if (invalid_char_position != NULL)
+               *invalid_char_position = NULL;
 
        /* first we validate the name portion (name@domain) */
        for (c = email_address;  *c;  c++) {
@@ -1051,8 +1054,11 @@ modest_text_utils_validate_email_address (const gchar *email_address)
                        break;
                if (*c <= ' ' || *c >= 127) 
                        return FALSE;
-               if (strchr(rfc822_specials, *c)) 
+               if (strchr(rfc822_specials, *c)) {
+                       if (invalid_char_position)
+                               *invalid_char_position = c;
                        return FALSE;
+               }
        }
        if (c == email_address || *(c - 1) == '.') 
                return FALSE;
@@ -1068,21 +1074,24 @@ modest_text_utils_validate_email_address (const gchar *email_address)
                }
                if (*c <= ' ' || *c >= 127) 
                        return FALSE;
-               if (strchr(rfc822_specials, *c)) 
+               if (strchr(rfc822_specials, *c)) {
+                       if (invalid_char_position)
+                               *invalid_char_position = c;
                        return FALSE;
+               }
        } while (*++c);
 
        return (count >= 1) ? TRUE : FALSE;
 }
 
 gboolean 
-modest_text_utils_validate_recipient (const gchar *recipient)
+modest_text_utils_validate_recipient (const gchar *recipient, const gchar **invalid_char_position)
 {
        gchar *stripped, *current;
        gchar *right_part;
        gboolean has_error = FALSE;
 
-       if (modest_text_utils_validate_email_address (recipient))
+       if (modest_text_utils_validate_email_address (recipient, invalid_char_position))
                return TRUE;
        stripped = g_strdup (recipient);
        stripped = g_strstrip (stripped);
@@ -1139,7 +1148,7 @@ modest_text_utils_validate_recipient (const gchar *recipient)
 
                address = g_strndup (right_part+1, strlen (right_part) - 2);
                g_free (right_part);
-               valid = modest_text_utils_validate_email_address (address);
+               valid = modest_text_utils_validate_email_address (address, invalid_char_position);
                g_free (address);
                return valid;
        } else {
@@ -1185,3 +1194,16 @@ get_email_from_address (const gchar * address)
        else
                return g_strndup (left_limit + 1, (right_limit - left_limit) - 1);
 }
+
+gchar *      
+modest_text_utils_get_color_string (GdkColor *color)
+{
+
+       return g_strdup_printf ("#%x%x%x%x%x%x%x%x%x%x%x%x",
+                               (color->red >> 12)   & 0xf, (color->red >> 8)   & 0xf,
+                               (color->red >>  4)   & 0xf, (color->red)        & 0xf,
+                               (color->green >> 12) & 0xf, (color->green >> 8) & 0xf,
+                               (color->green >>  4) & 0xf, (color->green)      & 0xf,
+                               (color->blue >> 12)  & 0xf, (color->blue >> 8)  & 0xf,
+                               (color->blue >>  4)  & 0xf, (color->blue)       & 0xf);
+}