}
/**
- * account_free - Free an Account
- * @param[out] ptr Account to free
- */
-void account_free(struct Account **ptr)
-{
- if (!ptr || !*ptr)
- return;
-
- struct Account *a = *ptr;
- if (!TAILQ_EMPTY(&AllAccounts))
- TAILQ_REMOVE(&AllAccounts, a, entries);
- if (a->free_adata)
- a->free_adata(&a->adata);
-
- account_free_config(a);
-
- FREE(ptr);
-}
-
-/**
- * account_remove_mailbox - Remove a Mailbox from an Account
+ * account_mailbox_remove - Remove a Mailbox from an Account
* @param a Account
* @param m Mailbox to remove
*/
-void account_remove_mailbox(struct Account *a, struct Mailbox *m)
+bool account_mailbox_remove(struct Account *a, struct Mailbox *m)
{
+ if (!a)
+ return false;
+
+ bool result = false;
struct MailboxNode *np = NULL;
STAILQ_FOREACH(np, &a->mailboxes, entries)
{
if (np->mailbox == m)
{
STAILQ_REMOVE(&a->mailboxes, np, MailboxNode, entries);
+ result = true;
break;
}
}
{
account_free(&a);
}
+ return result;
+}
+
+/**
+ * account_free - Free an Account
+ * @param[out] ptr Account to free
+ */
+void account_free(struct Account **ptr)
+{
+ if (!ptr || !*ptr)
+ return;
+
+ struct Account *a = *ptr;
+ if (!TAILQ_EMPTY(&AllAccounts))
+ TAILQ_REMOVE(&AllAccounts, a, entries);
+ if (a->free_adata)
+ a->free_adata(&a->adata);
+
+ account_free_config(a);
+
+ FREE(ptr);
}
/**
#ifndef MUTT_ACCOUNT_H
#define MUTT_ACCOUNT_H
-#include "mutt/queue.h"
+#include <stdbool.h>
+#include "mutt/mutt.h"
#include "config/lib.h"
#include "mailbox.h"
void account_free(struct Account **ptr);
void account_free_config(struct Account *a);
int account_get_value(const struct Account *a, size_t vid, struct Buffer *result);
+bool account_mailbox_remove(struct Account *a, struct Mailbox *m);
struct Account *account_new(void);
-void account_remove_mailbox(struct Account *a, struct Mailbox *m);
int account_set_value(const struct Account *a, size_t vid, intptr_t value, struct Buffer *err);
#endif /* MUTT_ACCOUNT_H */