⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 account.c

📁 mutt-1.5.12 源代码。linux 下邮件接受的工具。
💻 C
字号:
/* * Copyright (C) 2000-5 Brendan Cully <brendan@kublai.com> *  *     This program is free software; you can redistribute it and/or modify *     it under the terms of the GNU General Public License as published by *     the Free Software Foundation; either version 2 of the License, or *     (at your option) any later version. *  *     This program is distributed in the hope that it will be useful, *     but WITHOUT ANY WARRANTY; without even the implied warranty of *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *     GNU General Public License for more details. *  *     You should have received a copy of the GNU General Public License *     along with this program; if not, write to the Free Software *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. */ /* remote host account manipulation (POP/IMAP) */#if HAVE_CONFIG_H# include "config.h"#endif#include "mutt.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)      user = ImapUser;    if (ImapLogin)      login = ImapLogin;  }#endif#ifdef USE_POP  if (a1->type == M_ACCT_TYPE_POP && PopUser)    user = PopUser;#endif    if (a1->flags & a2->flags & M_ACCT_USER)    return (!strcmp (a1->user, a2->user));  if (a1->flags & M_ACCT_USER)    return (!strcmp (a1->user, user));  if (a2->flags & M_ACCT_USER)    return (!strcmp (a2->user, user));  return 1;}/* mutt_account_fromurl: fill account with information from 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;  }  return 0;}/* mutt_account_tourl: fill URL with info from account. The URL information *   is a set of pointers into account - don't free or edit account until *   you've finished with url (make a copy of account if you need it for *   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#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  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)    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  /* 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;}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)    {      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 necessary */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  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_password (prompt, account->pass, sizeof (account->pass)))      return -1;  }  account->flags |= M_ACCT_PASS;  return 0;}void mutt_account_unsetpass (ACCOUNT* account){  account->flags &= !M_ACCT_PASS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -