user = NntpUser;
#endif
- 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));
+ if (a1->has_user && a2->has_user)
+ return !m_strcmp(a1->user, a2->user);
+ if (a1->has_user)
+ return !m_strcmp(a1->user, user);
+ if (a2->has_user)
+ return !m_strcmp(a2->user, user);
return 1;
}
if (url->user) {
m_strcpy(account->user, sizeof(account->user), url->user);
- account->flags |= M_ACCT_USER;
+ account->has_user = 1;
}
if (url->pass) {
m_strcpy(account->pass, sizeof(account->pass), url->pass);
- account->flags |= M_ACCT_PASS;
+ account->has_pass = 1;
}
if (url->port) {
account->port = url->port;
- account->flags |= M_ACCT_PORT;
+ account->has_port = 1;
}
return 0;
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;
+ url->scheme = account->has_ssl ? U_IMAPS : U_IMAP;
}
if (account->type == M_ACCT_TYPE_POP) {
- if (account->flags & M_ACCT_SSL)
- url->scheme = U_POPS;
- else
- url->scheme = U_POP;
+ url->scheme = account->has_ssl ? U_POPS : 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;
+ url->scheme = account->has_ssl ? U_NNTPS : U_NNTP;
}
#endif
url->host = account->host;
- if (account->flags & M_ACCT_PORT)
+ if (account->has_port)
url->port = account->port;
- if (account->flags & M_ACCT_USER)
+ if (account->has_user)
url->user = account->user;
- if (account->flags & M_ACCT_PASS)
+ if (account->has_pass)
url->pass = account->pass;
}
char prompt[STRING];
/* already set */
- if (account->flags & M_ACCT_USER)
+ if (account->has_user)
return 0;
else if ((account->type == M_ACCT_TYPE_IMAP) && !m_strisempty(ImapUser))
m_strcpy(account->user, sizeof(account->user), ImapUser);
return -1;
}
- account->flags |= M_ACCT_USER;
+ account->has_user = 1;
return 0;
}
int mutt_account_getlogin (ACCOUNT* account)
{
/* already set */
- if (account->flags & M_ACCT_LOGIN)
+ if (account->has_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;
+ account->has_login = 1;
}
}
- if (!(account->flags & M_ACCT_LOGIN)) {
+ if (!account->has_login) {
mutt_account_getuser (account);
m_strcpy(account->login, sizeof(account->login), account->user);
}
- account->flags |= M_ACCT_LOGIN;
+ account->has_login = 1;
return 0;
}
{
char prompt[STRING];
- if (account->flags & M_ACCT_PASS)
+ if (account->has_pass)
return 0;
else if ((account->type == M_ACCT_TYPE_IMAP) && !m_strisempty(ImapPass))
m_strcpy(account->pass, sizeof(account->pass), ImapPass);
#endif
else {
snprintf(prompt, sizeof(prompt), _("Password for %s@%s: "),
- account->flags & M_ACCT_LOGIN ? account->login : account->user,
+ account->has_login ? account->login : account->user,
account->host);
account->pass[0] = '\0';
if (mutt_get_field_unbuffered(prompt, account->pass,
return -1;
}
- account->flags |= M_ACCT_PASS;
+ account->has_pass = 1;
return 0;
}
-
-void mutt_account_unsetpass (ACCOUNT * account)
-{
- account->flags &= ~M_ACCT_PASS;
-}
#include <lib-lib/lib-lib.h>
-/* account types */
enum {
- M_ACCT_TYPE_NONE = 0,
- M_ACCT_TYPE_IMAP,
- M_ACCT_TYPE_NNTP,
- M_ACCT_TYPE_POP
+ M_ACCT_TYPE_NONE = 0,
+ M_ACCT_TYPE_IMAP,
+ M_ACCT_TYPE_NNTP,
+ M_ACCT_TYPE_POP
};
-/* account flags */
-#define M_ACCT_PORT (1<<0)
-#define M_ACCT_USER (1<<1)
-#define M_ACCT_LOGIN (1<<2)
-#define M_ACCT_PASS (1<<3)
-#define M_ACCT_SSL (1<<4)
-
typedef struct {
- char user[64];
- char login[64];
- char pass[64];
- char host[128];
- unsigned short port;
- unsigned char type;
- unsigned char flags;
+ union {
+ struct {
+ unsigned has_port : 1;
+ unsigned has_user : 1;
+ unsigned has_login : 1;
+ unsigned has_pass : 1;
+ unsigned has_ssl : 1;
+ };
+ char flags;
+ };
+
+ char type;
+ int port;
+
+ char user[64];
+ char login[64];
+ char pass[64];
+ char host[128];
} ACCOUNT;
int mutt_account_match (const ACCOUNT * a1, const ACCOUNT * m2);
int mutt_account_getuser (ACCOUNT * account);
int mutt_account_getlogin (ACCOUNT * account);
int mutt_account_getpass (ACCOUNT * account);
-void mutt_account_unsetpass (ACCOUNT * account);
#endif /* _MUTT_ACCOUNT_H_ */
* mailboxes command ;-((( FIXME
*/
buf[0] = '\0';
- snprintf (buf, sizeof (buf), "nntp%s://%s%s%s%s/%s",
- (data->nserv->conn->account.flags & M_ACCT_SSL) ? "s" : "",
- NONULL (data->nserv->conn->account.user),
- *data->nserv->conn->account.pass ? ":" : "",
- *data->nserv->conn->account.pass ? data->nserv->conn->account.pass : "",
- data->nserv->conn->account.host,
- data->group);
+ snprintf(buf, sizeof (buf), "nntp%s://%s%s%s%s/%s",
+ data->nserv->conn->account.has_ssl ? "s" : "",
+ NONULL(data->nserv->conn->account.user),
+ *data->nserv->conn->account.pass ? ":" : "",
+ *data->nserv->conn->account.pass ? data->nserv->conn->account.pass : "",
+ data->nserv->conn->account.host,
+ data->group);
/* bail out if group not found via mailboxes */
if ((i = buffy_lookup (buf)) < 0)
char buf[STRING];
unsigned char flags = conn->account.flags;
- if (mutt_account_getuser (&conn->account) || !conn->account.user[0] ||
- mutt_account_getpass (&conn->account) || !conn->account.pass[0]) {
+ if (mutt_account_getuser(&conn->account) || !conn->account.user[0] ||
+ mutt_account_getpass(&conn->account) || !conn->account.pass[0]) {
conn->account.flags = flags;
return -2;
}
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
- if (!(conn->account.flags & M_ACCT_USER) && m_strncmp("480", buf, 3)) {
+ if (!conn->account.has_user && m_strncmp("480", buf, 3)) {
serv->status = NNTP_OK;
return 0;
}