X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=account.c;h=7838827f72aaefd68f057806f01e8a1a5cbde5e2;hp=c22b57d9e90a948139521e3d90939acdbe318c90;hb=f3cbb9f51357972f6e74244494236a41dc4d84cd;hpb=7f7a0be369840b290248e5b0302beb447fa1b3cd diff --git a/account.c b/account.c index c22b57d..7838827 100644 --- a/account.c +++ b/account.c @@ -9,86 +9,73 @@ /* remote host account manipulation (POP/IMAP) */ -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include +#include +#include +#include #include "mutt.h" -#include "enter.h" -#include "ascii.h" #include "account.h" -#include "url.h" - /* mutt_account_match: compare account info (host/port/user/login) */ int mutt_account_match (const ACCOUNT * a1, const ACCOUNT * a2) { - const char* user = NONULL (Username); - const char* login = NONULL (Username); - - if (a1->type != a2->type) - return 0; - if (ascii_strcasecmp (a1->host, a2->host)) - return 0; - if (a1->port != a2->port) - return 0; - -#ifdef USE_IMAP - if (a1->type == M_ACCT_TYPE_IMAP) { - if (ImapUser && (ImapUser[0] != '\0')) - user = ImapUser; - if (ImapLogin && (ImapLogin[0] != '\0')) - login = ImapLogin; - } -#endif + const char* user = NONULL (Username); + const char* login = NONULL (Username); + + if (a1->type != a2->type) + return 0; + if (ascii_strcasecmp (a1->host, a2->host)) + return 0; + if (a1->port != a2->port) + return 0; + + if (a1->type == M_ACCT_TYPE_IMAP) { + if (ImapUser && (ImapUser[0] != '\0')) + user = ImapUser; + if (ImapLogin && (ImapLogin[0] != '\0')) + login = ImapLogin; + } -#ifdef USE_POP - if (a1->type == M_ACCT_TYPE_POP && PopUser) - user = PopUser; -#endif + if (a1->type == M_ACCT_TYPE_POP && PopUser) + user = PopUser; #ifdef USE_NNTP - if (a1->type == M_ACCT_TYPE_NNTP && NntpUser) - user = NntpUser; + if (a1->type == M_ACCT_TYPE_NNTP && NntpUser) + user = NntpUser; #endif - if (a1->flags & a2->flags & M_ACCT_USER) - return (!str_cmp (a1->user, a2->user)); - if (a1->flags & M_ACCT_USER) - return (!str_cmp (a1->user, user)); - if (a2->flags & M_ACCT_USER) - return (!str_cmp (a2->user, user)); + if (a1->flags & a2->flags & M_ACCT_USER) + return (!m_strcmp(a1->user, a2->user)); + if (a1->flags & M_ACCT_USER) + return (!m_strcmp(a1->user, user)); + if (a2->flags & M_ACCT_USER) + return (!m_strcmp(a2->user, user)); - return 1; + return 1; } /* mutt_account_fromurl: fill account with information from url. */ -int mutt_account_fromurl (ACCOUNT * account, ciss_url_t * url) +int mutt_account_fromurl(ACCOUNT *account, ciss_url_t *url) { - /* must be present */ - if (url->host) - strfcpy (account->host, url->host, sizeof (account->host)); - else - return -1; - - if (url->user) { - strfcpy (account->user, url->user, sizeof (account->user)); - account->flags |= M_ACCT_USER; - } - if (url->pass) { - strfcpy (account->pass, url->pass, sizeof (account->pass)); - account->flags |= M_ACCT_PASS; - } - if (url->port) { - account->port = url->port; - account->flags |= M_ACCT_PORT; - } + /* must be present */ + if (!url->host) + return -1; + m_strcpy(account->host, sizeof(account->host), url->host); + + if (url->user) { + m_strcpy(account->user, sizeof(account->user), url->user); + account->flags |= M_ACCT_USER; + } + if (url->pass) { + m_strcpy(account->pass, sizeof(account->pass), url->pass); + account->flags |= M_ACCT_PASS; + } + if (url->port) { + account->port = url->port; + account->flags |= M_ACCT_PORT; + } - return 0; + return 0; } /* mutt_account_tourl: fill URL with info from account. The URL information @@ -97,141 +84,127 @@ int mutt_account_fromurl (ACCOUNT * account, ciss_url_t * url) * a while). */ void mutt_account_tourl (ACCOUNT * account, ciss_url_t * url) { - url->scheme = U_UNKNOWN; - url->user = NULL; - url->pass = NULL; - url->port = 0; - -#ifdef USE_IMAP - if (account->type == M_ACCT_TYPE_IMAP) { - if (account->flags & M_ACCT_SSL) - url->scheme = U_IMAPS; - else - url->scheme = U_IMAP; - } -#endif + url->scheme = U_UNKNOWN; + url->user = NULL; + url->pass = NULL; + url->port = 0; + + if (account->type == M_ACCT_TYPE_IMAP) { + if (account->flags & M_ACCT_SSL) + url->scheme = U_IMAPS; + else + url->scheme = U_IMAP; + } -#ifdef USE_POP - if (account->type == M_ACCT_TYPE_POP) { - if (account->flags & M_ACCT_SSL) - url->scheme = U_POPS; - else - url->scheme = U_POP; - } -#endif + if (account->type == M_ACCT_TYPE_POP) { + if (account->flags & M_ACCT_SSL) + url->scheme = U_POPS; + else + url->scheme = U_POP; + } #ifdef USE_NNTP - if (account->type == M_ACCT_TYPE_NNTP) { - if (account->flags & M_ACCT_SSL) - url->scheme = U_NNTPS; - else - url->scheme = U_NNTP; - } + if (account->type == M_ACCT_TYPE_NNTP) { + if (account->flags & M_ACCT_SSL) + url->scheme = U_NNTPS; + else + url->scheme = U_NNTP; + } #endif - url->host = account->host; - if (account->flags & M_ACCT_PORT) - url->port = account->port; - if (account->flags & M_ACCT_USER) - url->user = account->user; - if (account->flags & M_ACCT_PASS) - url->pass = account->pass; + url->host = account->host; + if (account->flags & M_ACCT_PORT) + url->port = account->port; + if (account->flags & M_ACCT_USER) + url->user = account->user; + if (account->flags & M_ACCT_PASS) + url->pass = account->pass; } /* mutt_account_getuser: retrieve username into ACCOUNT, if necessary */ int mutt_account_getuser (ACCOUNT * account) { - char prompt[SHORT_STRING]; - - /* already set */ - if (account->flags & M_ACCT_USER) - return 0; -#ifdef USE_IMAP - else if ((account->type == M_ACCT_TYPE_IMAP) && ImapUser && (ImapUser[0] != '\0')) - strfcpy (account->user, ImapUser, sizeof (account->user)); -#endif -#ifdef USE_POP - else if ((account->type == M_ACCT_TYPE_POP) && PopUser) - strfcpy (account->user, PopUser, sizeof (account->user)); -#endif + char prompt[SHORT_STRING]; + + /* already set */ + if (account->flags & M_ACCT_USER) + return 0; + else if ((account->type == M_ACCT_TYPE_IMAP) && !m_strisempty(ImapUser)) + m_strcpy(account->user, sizeof(account->user), ImapUser); + else if ((account->type == M_ACCT_TYPE_POP) && !m_strisempty(PopUser)) + m_strcpy(account->user, sizeof(account->user), PopUser); #ifdef USE_NNTP - else if ((account->type == M_ACCT_TYPE_NNTP) && NntpUser) - strfcpy (account->user, NntpUser, sizeof (account->user)); + else if ((account->type == M_ACCT_TYPE_NNTP) && !m_strisempty(NntpUser)) + m_strcpy(account->user, sizeof(account->user), NntpUser); #endif - /* prompt (defaults to unix username), copy into account->user */ - else { - snprintf (prompt, sizeof (prompt), _("Username at %s: "), account->host); - strfcpy (account->user, NONULL (Username), sizeof (account->user)); - if (mutt_get_field_unbuffered (prompt, account->user, - sizeof (account->user), 0)) - return -1; - } - - account->flags |= M_ACCT_USER; - - return 0; + /* prompt (defaults to unix username), copy into account->user */ + else { + snprintf(prompt, sizeof(prompt), _("Username at %s: "), account->host); + m_strcpy(account->user, sizeof(account->user), NONULL(Username)); + if (mutt_get_field_unbuffered(prompt, account->user, + sizeof(account->user), 0)) + return -1; + } + + account->flags |= M_ACCT_USER; + + return 0; } int mutt_account_getlogin (ACCOUNT* account) { - /* already set */ - if (account->flags & M_ACCT_LOGIN) - return 0; -#ifdef USE_IMAP - else if (account->type == M_ACCT_TYPE_IMAP) - { - if (ImapLogin && (ImapLogin[0] != '\0')) { - strfcpy (account->login, ImapLogin, sizeof (account->login)); - account->flags |= M_ACCT_LOGIN; + /* already set */ + if (account->flags & M_ACCT_LOGIN) + return 0; + else if (account->type == M_ACCT_TYPE_IMAP) + { + if (!m_strisempty(ImapLogin)) { + m_strcpy(account->login, sizeof(account->login), ImapLogin); + account->flags |= M_ACCT_LOGIN; + } } - } -#endif - if (!(account->flags & M_ACCT_LOGIN)) { - mutt_account_getuser (account); - strfcpy (account->login, account->user, sizeof (account->login)); - } + if (!(account->flags & M_ACCT_LOGIN)) { + mutt_account_getuser (account); + m_strcpy(account->login, sizeof(account->login), account->user); + } - account->flags |= M_ACCT_LOGIN; + account->flags |= M_ACCT_LOGIN; - return 0; + return 0; } /* mutt_account_getpass: fetch password into ACCOUNT, if neccessary */ int mutt_account_getpass (ACCOUNT * account) { - char prompt[SHORT_STRING]; - - if (account->flags & M_ACCT_PASS) - return 0; -#ifdef USE_IMAP - else if ((account->type == M_ACCT_TYPE_IMAP) && ImapPass) - strfcpy (account->pass, ImapPass, sizeof (account->pass)); -#endif -#ifdef USE_POP - else if ((account->type == M_ACCT_TYPE_POP) && PopPass) - strfcpy (account->pass, PopPass, sizeof (account->pass)); -#endif + char prompt[SHORT_STRING]; + + if (account->flags & M_ACCT_PASS) + return 0; + else if ((account->type == M_ACCT_TYPE_IMAP) && !m_strisempty(ImapPass)) + m_strcpy(account->pass, sizeof(account->pass), ImapPass); + else if ((account->type == M_ACCT_TYPE_POP) && !m_strisempty(PopPass)) + m_strcpy(account->pass, sizeof(account->pass), PopPass); #ifdef USE_NNTP - else if ((account->type == M_ACCT_TYPE_NNTP) && NntpPass) - strfcpy (account->pass, NntpPass, sizeof (account->pass)); + else if ((account->type == M_ACCT_TYPE_NNTP) && !m_strisempty(NntpPass)) + m_strcpy(account->pass, sizeof(account->pass), NntpPass); #endif - else { - snprintf (prompt, sizeof (prompt), _("Password for %s@%s: "), - account->flags & M_ACCT_LOGIN ? account->login : account->user, - account->host); - account->pass[0] = '\0'; - if (mutt_get_field_unbuffered (prompt, account->pass, - sizeof (account->pass), M_PASS)) - return -1; - } - - account->flags |= M_ACCT_PASS; - - return 0; + else { + snprintf(prompt, sizeof(prompt), _("Password for %s@%s: "), + account->flags & M_ACCT_LOGIN ? account->login : account->user, + account->host); + account->pass[0] = '\0'; + if (mutt_get_field_unbuffered(prompt, account->pass, + sizeof(account->pass), M_PASS)) + return -1; + } + + account->flags |= M_ACCT_PASS; + + return 0; } void mutt_account_unsetpass (ACCOUNT * account) { - account->flags &= !M_ACCT_PASS; + account->flags &= ~M_ACCT_PASS; }