{ "(file|rtsp|http|ftp|https)://[-A-Za-z0-9_$.+!*(),;:@%&=?/~#]+[-A-Za-z0-9_$%&=?/~#]",\
NULL, NULL },\
{ "www\\.[-a-z0-9.]+[-a-z0-9](:[0-9]*)?(/[-A-Za-z0-9_$.+!*(),;:@%&=?/~#]*[^]}\\),?!;:\"]?)?",\
- NULL, "http://" },\
+ NULL, "http://" }, \
{ "ftp\\.[-a-z0-9.]+[-a-z0-9](:[0-9]*)?(/[-A-Za-z0-9_$.+!*(),;:@%&=?/~#]*[^]}\\),?!;:\"]?)?",\
NULL, "ftp://" },\
{ "(voipto|callto|chatto|jabberto|xmpp):[-_a-z@0-9.\\+]+", \
return address;
}
+gchar *
+modest_text_utils_get_email_address (const gchar *full_address)
+{
+ const gchar *left, *right;
+
+ if (!full_address)
+ return NULL;
+
+ g_return_val_if_fail (g_utf8_validate (full_address, -1, NULL), NULL);
+
+ left = g_strrstr_len (full_address, strlen(full_address), "<");
+ if (left == NULL)
+ return g_strdup (full_address);
+ right = g_strstr_len (left, strlen(left), ">");
+ if (right == NULL)
+ return g_strdup (full_address);
+
+ return g_strndup (left + 1, right - left - 1);
+}
gint
modest_text_utils_get_subject_prefix_len (const gchar *sub)
return g_strdup(date_buf);
}
+
+gboolean
+modest_text_utils_validate_domain_name (const gchar *domain)
+{
+ gboolean valid = FALSE;
+ regex_t rx;
+ const gchar* domain_regex = "^[a-z0-9]([.]?[a-z0-9-])*[a-z0-9]$";
+
+ if (!domain)
+ return FALSE;
+
+ /* domain name: all alphanum or '-' or '.',
+ * but beginning/ending in alphanum */
+ if (regcomp (&rx, domain_regex, REG_ICASE|REG_EXTENDED|REG_NOSUB)) {
+ g_warning ("BUG: error in regexp");
+ return FALSE;
+ }
+
+ valid = (regexec (&rx, domain, 1, NULL, 0) == 0);
+ regfree (&rx);
+
+ return valid;
+}
+
+
+
gboolean
modest_text_utils_validate_email_address (const gchar *email_address, const gchar **invalid_char_position)
{
return FALSE;
do {
if (*c == '.') {
- if (c == domain || *(c - 1) == '.')
+ if (c == domain || *(c - 1) == '.' || *(c + 1) == '\0')
return FALSE;
count++;
}