diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2001-02-07 07:15:06 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-02-07 07:15:06 +0800 |
commit | c789892dc1b1828633c695d7d0d7585fef2e0ba3 (patch) | |
tree | efd320e312e199ba2b3317cf0d7f478d63c32139 /mail/mail-config-druid.c | |
parent | 2319bdca2e42e823c563c03e4fd419a7a7937713 (diff) | |
download | gsoc2013-evolution-c789892dc1b1828633c695d7d0d7585fef2e0ba3.tar.gz gsoc2013-evolution-c789892dc1b1828633c695d7d0d7585fef2e0ba3.tar.zst gsoc2013-evolution-c789892dc1b1828633c695d7d0d7585fef2e0ba3.zip |
Updated to checkfor "(none)".
2001-02-06 Jeffrey Stedfast <fejj@ximian.com>
* mail-config-druid.c (set_defaults): Updated to checkfor
"(none)".
* mail-account-editor.c (entry_changed): Make sure the email
address is valid.
* mail-config-druid.c (identity_check): Check to make sure we have
a valid email address.
(is_email): New function to check a string to see if it's a valid
email address.
svn path=/trunk/; revision=8034
Diffstat (limited to 'mail/mail-config-druid.c')
-rw-r--r-- | mail/mail-config-druid.c | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/mail/mail-config-druid.c b/mail/mail-config-druid.c index 4e164cccbc..d33247d33a 100644 --- a/mail/mail-config-druid.c +++ b/mail/mail-config-druid.c @@ -237,12 +237,34 @@ druid_finish (GnomeDruidPage *page, gpointer arg1, gpointer user_data) gtk_widget_destroy (GTK_WIDGET (druid)); } +static gboolean +is_email (const char *address) +{ + const char *at, *hname; + + g_return_val_if_fail (address != NULL, FALSE); + + at = strchr (address, '@'); + /* make sure we have an '@' and that it's not the first or last char */ + if (!at || at == address || *(at + 1) == '\0') + return FALSE; + + hname = at + 1; + /* make sure the first and last chars aren't '.' */ + if (*hname == '.' || hname[strlen (hname) - 1] == '.') + return FALSE; + + return strchr (hname, '.') != NULL; +} + /* Identity Page */ static void identity_check (MailConfigDruid *druid) { - if (gtk_entry_get_text (druid->full_name) && - gtk_entry_get_text (druid->email_address)) + char *address; + + address = gtk_entry_get_text (druid->email_address); + if (gtk_entry_get_text (druid->full_name) && is_email (address)) gnome_druid_set_buttons_sensitive (druid->druid, TRUE, TRUE, TRUE); else gnome_druid_set_buttons_sensitive (druid->druid, TRUE, FALSE, TRUE); @@ -769,6 +791,14 @@ provider_compare (const CamelProvider *p1, const CamelProvider *p2) } } +static gboolean +is_domain (const char *domain) +{ + /* domain && *domain should be enough but linux's + getdomainname() likes to return "(none)" */ + return domain && *domain && strcmp (domain, "(none)"); +} + static void set_defaults (MailConfigDruid *druid) { @@ -795,8 +825,8 @@ set_defaults (MailConfigDruid *druid) memset (domain, 0, sizeof (domain)); getdomainname (domain, 1023); - address = g_strdup_printf ("%s@%s%s%s", user, hostname, domain && *domain ? "." : "", - domain && *domain ? domain : ""); + address = g_strdup_printf ("%s@%s%s%s", user, hostname, is_domain (domain) ? "." : "", + is_domain (domain) ? domain : ""); gtk_entry_set_text (druid->email_address, address); g_free (address); |