I'm fed up with stupid defines when C can come up with *way* betted: bit-fields.
[apps/madmutt.git] / account.c
index ea1806a..044aa6c 100644 (file)
--- a/account.c
+++ b/account.c
@@ -44,12 +44,12 @@ int mutt_account_match (const ACCOUNT * a1, const ACCOUNT * a2)
         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;
 }
@@ -64,15 +64,15 @@ int mutt_account_fromurl(ACCOUNT *account, ciss_url_t *url)
 
     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;
@@ -90,34 +90,25 @@ void mutt_account_tourl (ACCOUNT * account, ciss_url_t * url)
     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;
 }
 
@@ -127,7 +118,7 @@ int mutt_account_getuser (ACCOUNT * account)
     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);
@@ -146,7 +137,7 @@ int mutt_account_getuser (ACCOUNT * account)
             return -1;
     }
 
-    account->flags |= M_ACCT_USER;
+    account->has_user = 1;
 
     return 0;
 }
@@ -154,22 +145,22 @@ int mutt_account_getuser (ACCOUNT * account)
 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;
 }
@@ -179,7 +170,7 @@ int mutt_account_getpass (ACCOUNT * account)
 {
     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);
@@ -191,7 +182,7 @@ int mutt_account_getpass (ACCOUNT * account)
 #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,
@@ -199,12 +190,7 @@ int mutt_account_getpass (ACCOUNT * account)
             return -1;
     }
 
-    account->flags |= M_ACCT_PASS;
+    account->has_pass = 1;
 
     return 0;
 }
-
-void mutt_account_unsetpass (ACCOUNT * account)
-{
-    account->flags &= ~M_ACCT_PASS;
-}