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 | |
parent | 2319bdca2e42e823c563c03e4fd419a7a7937713 (diff) | |
download | gsoc2013-evolution-c789892dc1b1828633c695d7d0d7585fef2e0ba3.tar gsoc2013-evolution-c789892dc1b1828633c695d7d0d7585fef2e0ba3.tar.gz gsoc2013-evolution-c789892dc1b1828633c695d7d0d7585fef2e0ba3.tar.bz2 gsoc2013-evolution-c789892dc1b1828633c695d7d0d7585fef2e0ba3.tar.lz gsoc2013-evolution-c789892dc1b1828633c695d7d0d7585fef2e0ba3.tar.xz 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
-rw-r--r-- | mail/ChangeLog | 13 | ||||
-rw-r--r-- | mail/mail-account-editor.c | 22 | ||||
-rw-r--r-- | mail/mail-config-druid.c | 38 |
3 files changed, 68 insertions, 5 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 3c6cc52d55..f7ab2519fd 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,16 @@ +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. + 2001-02-05 Jeffrey Stedfast <fejj@ximian.com> * evolution-mbox-importer.c: We are now going to use a file diff --git a/mail/mail-account-editor.c b/mail/mail-account-editor.c index 4d73acb009..886b696218 100644 --- a/mail/mail-account-editor.c +++ b/mail/mail-account-editor.c @@ -86,6 +86,26 @@ mail_account_editor_finalise (GtkObject *obj) ((GtkObjectClass *)(parent_class))->finalize (obj); } +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; +} + /* callbacks */ static void entry_changed (GtkEntry *entry, gpointer data) @@ -98,7 +118,7 @@ entry_changed (GtkEntry *entry, gpointer data) name = gtk_entry_get_text (editor->name); address = gtk_entry_get_text (editor->email); - sensitive = account_name && *account_name && name && *name && address && *address; + sensitive = account_name && *account_name && name && *name && is_email (address); gnome_dialog_set_sensitive (GNOME_DIALOG (editor), 0, sensitive); gnome_dialog_set_sensitive (GNOME_DIALOG (editor), 1, sensitive); 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); |