NeoMutt  2021-10-29-43-g6b8931
Teaching an old dog new tricks
DOXYGEN
alternates.h File Reference

Alternate address handling. More...

#include <stdbool.h>
#include <stdint.h>
#include "core/lib.h"
+ Include dependency graph for alternates.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  NotifyAlternates { NT_ALTERN_ADD = 1 , NT_ALTERN_DELETE , NT_ALTERN_DELETE_ALL }
 Alternates command notification types. More...
 

Functions

void alternates_init (void)
 Set up the alternates lists. More...
 
void alternates_free (void)
 Free the alternates lists. More...
 
enum CommandResult parse_alternates (struct Buffer *buf, struct Buffer *s, intptr_t data, struct Buffer *err)
 Parse the 'alternates' command - Implements Command::parse() -. More...
 
enum CommandResult parse_unalternates (struct Buffer *buf, struct Buffer *s, intptr_t data, struct Buffer *err)
 Parse the 'unalternates' command - Implements Command::parse() -. More...
 
bool mutt_alternates_match (const char *addr)
 Compare an Address to the Un/Alternates lists. More...
 
void mutt_alternates_reset (struct Mailbox *m)
 Clear the recipient valid flag of all emails. More...
 

Detailed Description

Alternate address handling.

Authors
  • Richard Russon

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, see http://www.gnu.org/licenses/.

Definition in file alternates.h.

Enumeration Type Documentation

◆ NotifyAlternates

Alternates command notification types.

Note
Notifications are sent after the event.
Enumerator
NT_ALTERN_ADD 

Alternate address has been added.

NT_ALTERN_DELETE 

Alternate address has been deleted.

NT_ALTERN_DELETE_ALL 

All Alternate addresses have been deleted.

Definition at line 37 of file alternates.h.

38 {
39  NT_ALTERN_ADD = 1,
42 };
@ NT_ALTERN_ADD
Alternate address has been added.
Definition: alternates.h:39
@ NT_ALTERN_DELETE
Alternate address has been deleted.
Definition: alternates.h:40
@ NT_ALTERN_DELETE_ALL
All Alternate addresses have been deleted.
Definition: alternates.h:41

Function Documentation

◆ alternates_init()

void alternates_init ( void  )

Set up the alternates lists.

Definition at line 60 of file alternates.c.

61 {
62  if (AlternatesNotify)
63  return;
64 
67 }
static struct Notify * AlternatesNotify
Definition: alternates.c:44
struct Notify * notify_new(void)
Create a new notifications handler.
Definition: notify.c:60
void notify_set_parent(struct Notify *notify, struct Notify *parent)
Set the parent notification handler.
Definition: notify.c:93
Container for Accounts, Notifications.
Definition: neomutt.h:37
struct Notify * notify
Notifications handler.
Definition: neomutt.h:38
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ alternates_free()

void alternates_free ( void  )

Free the alternates lists.

Definition at line 49 of file alternates.c.

50 {
52 
55 }
struct RegexList Alternates
List of regexes to match the user's alternate email addresses.
Definition: alternates.c:42
struct RegexList UnAlternates
List of regexes to blacklist false matches in Alternates.
Definition: alternates.c:43
void notify_free(struct Notify **ptr)
Free a notification handler.
Definition: notify.c:73
void mutt_regexlist_free(struct RegexList *rl)
Free a RegexList object.
Definition: regex.c:173
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_alternates_match()

bool mutt_alternates_match ( const char *  addr)

Compare an Address to the Un/Alternates lists.

Parameters
addrAddress to check
Return values
trueAddress matches

Definition at line 152 of file alternates.c.

153 {
154  if (!addr)
155  return false;
156 
157  if (mutt_regexlist_match(&Alternates, addr))
158  {
159  mutt_debug(LL_DEBUG5, "yes, %s matched by alternates\n", addr);
161  mutt_debug(LL_DEBUG5, "but, %s matched by unalternates\n", addr);
162  else
163  return true;
164  }
165 
166  return false;
167 }
#define mutt_debug(LEVEL,...)
Definition: logging.h:84
@ LL_DEBUG5
Log at debug level 5.
Definition: logging.h:44
bool mutt_regexlist_match(struct RegexList *rl, const char *str)
Does a string match any Regex in the list?
Definition: regex.c:194
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_alternates_reset()

void mutt_alternates_reset ( struct Mailbox m)

Clear the recipient valid flag of all emails.

Definition at line 72 of file alternates.c.

73 {
74  if (!m)
75  return;
76 
77  for (int i = 0; i < m->msg_count; i++)
78  {
79  struct Email *e = m->emails[i];
80  if (!e)
81  break;
82  e->recip_valid = false;
83  }
84 }
The envelope/body of an email.
Definition: email.h:37
bool recip_valid
Is_recipient is valid.
Definition: email.h:104
int msg_count
Total number of messages.
Definition: mailbox.h:91
struct Email ** emails
Array of Emails.
Definition: mailbox.h:99
+ Here is the caller graph for this function: