NeoMutt  2025-12-11-58-g09398d
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
group.h
Go to the documentation of this file.
1
23
24#ifndef MUTT_ADDRESS_GROUP_H
25#define MUTT_ADDRESS_GROUP_H
26
27#include <stdbool.h>
28#include <stdint.h>
29#include "mutt/lib.h"
30#include "address.h"
31
32#define MUTT_GROUP 0
33#define MUTT_UNGROUP 1
34
38struct Group
39{
40 struct AddressList al;
41 struct RegexList rs;
42 char *name;
43};
44
49{
50 struct Group *group;
52};
54
55// Single Address Group
56bool group_match(struct Group *g, const char *str);
57
58// List of Addres Groups
59void grouplist_add_group (struct GroupList *gl, struct Group *g);
60void grouplist_add_addrlist(struct GroupList *gl, struct AddressList *al);
61int grouplist_add_regex (struct GroupList *gl, const char *str, uint16_t flags, struct Buffer *err);
62void grouplist_destroy (struct GroupList *gl);
63
64// HashTable of Address Groups
65struct HashTable *groups_new (void);
66void groups_free(struct HashTable **pptr);
67
68struct Group *groups_get_group (struct HashTable *groups, const char *name);
69int groups_remove_addrlist (struct HashTable *groups, struct GroupList *gl, struct AddressList *al);
70void groups_remove_grouplist(struct HashTable *groups, struct GroupList *gl);
71int groups_remove_regex (struct HashTable *groups, struct GroupList *gl, const char *str);
72
73#endif /* MUTT_ADDRESS_GROUP_H */
Representation of an email address.
int grouplist_add_regex(struct GroupList *gl, const char *str, uint16_t flags, struct Buffer *err)
Add matching Addresses to a GroupList.
Definition group.c:245
int groups_remove_addrlist(struct HashTable *groups, struct GroupList *gl, struct AddressList *al)
Remove an AddressList from a GroupList.
Definition group.c:337
bool group_match(struct Group *g, const char *str)
Does a string match an entry in a Group?
Definition group.c:161
void groups_remove_grouplist(struct HashTable *groups, struct GroupList *gl)
Clear a GroupList.
Definition group.c:312
int groups_remove_regex(struct HashTable *groups, struct GroupList *gl, const char *str)
Remove matching addresses from a GroupList.
Definition group.c:368
struct Group * groups_get_group(struct HashTable *groups, const char *name)
Get a Group by its name.
Definition group.c:291
void grouplist_add_addrlist(struct GroupList *gl, struct AddressList *al)
Add Address list to a GroupList.
Definition group.c:224
void grouplist_add_group(struct GroupList *gl, struct Group *g)
Add a Group to a GroupList.
Definition group.c:183
struct HashTable * groups_new(void)
Create a HashTable for the Address Groups.
Definition group.c:267
void groups_free(struct HashTable **pptr)
Free Address Groups HashTable.
Definition group.c:280
void grouplist_destroy(struct GroupList *gl)
Free a GroupList.
Definition group.c:203
Convenience wrapper for the library headers.
#define STAILQ_HEAD(name, type)
Definition queue.h:312
String manipulation buffer.
Definition buffer.h:36
An element in a GroupList.
Definition group.h:49
STAILQ_ENTRY(GroupNode) entries
Linked list.
struct Group * group
Address Group.
Definition group.h:50
A set of email addresses.
Definition group.h:39
char * name
Name of Group.
Definition group.h:42
struct AddressList al
List of Addresses.
Definition group.h:40
struct RegexList rs
Group Regex patterns.
Definition group.h:41
A Hash Table.
Definition hash.h:99