X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=account.c;h=0942adc9c515cfa79408a48e2d7780ad0514c586;hp=46f6e8e6edbd8b210e60f123856be060a1caca52;hb=5e53f9e5f65aa5b3af6f5af9d868403536534afb;hpb=c3e57678c8be193fc137854020f3a90887be97c9 diff --git a/account.c b/account.c index 46f6e8e..0942adc 100644 --- a/account.c +++ b/account.c @@ -1,6 +1,6 @@ /* * Copyright notice from original mutt: - * Copyright (C) 2000-3 Brendan Cully + * Copyright (C) 2000-5 Brendan Cully * * This file is part of mutt-ng, see http://www.muttng.org/. * It's licensed under the GNU General Public License, @@ -14,13 +14,20 @@ #endif #include "mutt.h" +#include "enter.h" +#include "ascii.h" #include "account.h" #include "url.h" -/* mutt_account_match: compare account info (host/port/user) */ +#include "lib/mem.h" +#include "lib/intl.h" +#include "lib/str.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* user = NONULL (Username); + const char* login = NONULL (Username); if (a1->type != a2->type) return 0; @@ -30,8 +37,12 @@ int mutt_account_match (const ACCOUNT * a1, const ACCOUNT * a2) return 0; #ifdef USE_IMAP - if (a1->type == M_ACCT_TYPE_IMAP && ImapUser) - user = ImapUser; + if (a1->type == M_ACCT_TYPE_IMAP) { + if (ImapUser && (ImapUser[0] != '\0')) + user = ImapUser; + if (ImapLogin && (ImapLogin[0] != '\0')) + login = ImapLogin; + } #endif #ifdef USE_POP @@ -45,11 +56,11 @@ int mutt_account_match (const ACCOUNT * a1, const ACCOUNT * a2) #endif if (a1->flags & a2->flags & M_ACCT_USER) - return (!strcmp (a1->user, a2->user)); + return (!str_cmp (a1->user, a2->user)); if (a1->flags & M_ACCT_USER) - return (!strcmp (a1->user, user)); + return (!str_cmp (a1->user, user)); if (a2->flags & M_ACCT_USER) - return (!strcmp (a2->user, user)); + return (!str_cmp (a2->user, user)); return 1; } @@ -126,7 +137,7 @@ void mutt_account_tourl (ACCOUNT * account, ciss_url_t * url) url->pass = account->pass; } -/* mutt_account_getuser: retrieve username into ACCOUNT, if neccessary */ +/* mutt_account_getuser: retrieve username into ACCOUNT, if necessary */ int mutt_account_getuser (ACCOUNT * account) { char prompt[SHORT_STRING]; @@ -135,7 +146,7 @@ int mutt_account_getuser (ACCOUNT * account) if (account->flags & M_ACCT_USER) return 0; #ifdef USE_IMAP - else if ((account->type == M_ACCT_TYPE_IMAP) && ImapUser) + else if ((account->type == M_ACCT_TYPE_IMAP) && ImapUser && (ImapUser[0] != '\0')) strfcpy (account->user, ImapUser, sizeof (account->user)); #endif #ifdef USE_POP @@ -150,7 +161,8 @@ int mutt_account_getuser (ACCOUNT * account) else { snprintf (prompt, sizeof (prompt), _("Username at %s: "), account->host); strfcpy (account->user, NONULL (Username), sizeof (account->user)); - if (mutt_get_field (prompt, account->user, sizeof (account->user), 0)) + if (mutt_get_field_unbuffered (prompt, account->user, + sizeof (account->user), 0)) return -1; } @@ -159,6 +171,31 @@ int mutt_account_getuser (ACCOUNT * account) 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; + } + } +#endif + + if (!(account->flags & M_ACCT_LOGIN)) { + mutt_account_getuser (account); + strfcpy (account->login, account->user, sizeof (account->login)); + } + + account->flags |= M_ACCT_LOGIN; + + return 0; +} + /* mutt_account_getpass: fetch password into ACCOUNT, if neccessary */ int mutt_account_getpass (ACCOUNT * account) { @@ -180,9 +217,11 @@ int mutt_account_getpass (ACCOUNT * account) #endif else { snprintf (prompt, sizeof (prompt), _("Password for %s@%s: "), - account->user, account->host); + account->flags & M_ACCT_LOGIN ? account->login : account->user, + account->host); account->pass[0] = '\0'; - if (mutt_get_password (prompt, account->pass, sizeof (account->pass))) + if (mutt_get_field_unbuffered (prompt, account->pass, + sizeof (account->pass), M_PASS)) return -1; }