diff options
Diffstat (limited to 'mail/mail-config.c')
-rw-r--r-- | mail/mail-config.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/mail/mail-config.c b/mail/mail-config.c index be685ba180..38d84fc0e7 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -772,6 +772,38 @@ mail_config_get_account_by_name (const char *account_name) return NULL; } +/* + We do a strncmp on the MIN of the url lengths rather than a straight strcmp because + I've observed extra stuff getting stuck on the end of urls in camel. Hopefully + this work-around won't lead to any weirdness. +*/ + +const MailConfigAccount * +mail_config_get_account_by_source_url (const char *source_url) +{ + const MailConfigAccount *account; + GSList *l; + gint src_len; + + g_return_val_if_fail (source_url != NULL, NULL); + + src_len = strlen (source_url); + + l = config->accounts; + while (l) { + account = l->data; + if (account + && account->source + && account->source->url + && !strncmp (account->source->url, source_url, MIN (src_len, strlen (account->source->url)))) + return account; + + l = l->next; + } + + return NULL; +} + const GSList * mail_config_get_accounts (void) { |