NeoMutt  2025-09-05-55-g97fc89
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
address.h
Go to the documentation of this file.
1
23
24#ifndef MUTT_ADDRESS_ADDRESS_H
25#define MUTT_ADDRESS_ADDRESS_H
26
27#include <stdbool.h>
28#include <stdio.h>
29#include "mutt/lib.h"
30
34struct Address
35{
36 struct Buffer *personal;
37 struct Buffer *mailbox;
38 bool group : 1;
39 bool is_intl : 1;
40 bool intl_checked : 1;
42};
43TAILQ_HEAD(AddressList, Address);
44
45extern const char AddressSpecials[];
46
55typedef bool (*addr_predicate_t)(const struct Address *a);
56
57/* Utility functions that don't use struct Address or struct AddressList */
58void mutt_addr_cat (char *buf, size_t buflen, const char *value, const char *specials);
59bool mutt_addr_valid_msgid(const char *msgid);
60
61/* Functions that work on a single struct Address */
62bool mutt_addr_cmp (const struct Address *a, const struct Address *b);
63struct Address *mutt_addr_copy (const struct Address *addr);
64struct Address *mutt_addr_create (const char *personal, const char *mailbox);
65const char * mutt_addr_for_display(const struct Address *a);
66void mutt_addr_free (struct Address **ptr);
67struct Address *mutt_addr_new (void);
68bool mutt_addr_to_intl (struct Address *a);
69bool mutt_addr_to_local (struct Address *a);
70bool mutt_addr_uses_unicode(const char *str);
71size_t mutt_addr_write (struct Buffer *buf, struct Address *addr, bool display);
72
73/* Functions that work on struct AddressList */
74void mutt_addrlist_append (struct AddressList *al, struct Address *a);
75void mutt_addrlist_clear (struct AddressList *al);
76void mutt_addrlist_copy (struct AddressList *dst, const struct AddressList *src, bool prune);
77int mutt_addrlist_count_recips(const struct AddressList *al);
78void mutt_addrlist_dedupe (struct AddressList *al);
79bool mutt_addrlist_equal (const struct AddressList *ala, const struct AddressList *alb);
80int mutt_addrlist_parse (struct AddressList *al, const char *s);
81int mutt_addrlist_parse2 (struct AddressList *al, const char *s);
82void mutt_addrlist_prepend (struct AddressList *al, struct Address *a);
83void mutt_addrlist_qualify (struct AddressList *al, const char *host);
84int mutt_addrlist_remove (struct AddressList *al, const char *mailbox);
85void mutt_addrlist_remove_xrefs(const struct AddressList *a, struct AddressList *b);
86bool mutt_addrlist_search (const struct AddressList *haystack, const struct Address *needle);
87int mutt_addrlist_to_intl (struct AddressList *al, char **err);
88int mutt_addrlist_to_local (struct AddressList *al);
89bool mutt_addrlist_uses_unicode(const struct AddressList *al);
90size_t mutt_addrlist_write (const struct AddressList *al, struct Buffer *buf, bool display);
91size_t mutt_addrlist_write_wrap (const struct AddressList *al, struct Buffer *buf, const char *header);
92void mutt_addrlist_write_file (const struct AddressList *al, FILE *fp, const char *header);
93size_t mutt_addrlist_write_list (const struct AddressList *al, struct ListHead *list);
94
95#endif /* MUTT_ADDRESS_ADDRESS_H */
const char AddressSpecials[]
Characters with special meaning for email addresses.
Definition address.c:45
struct Address * mutt_addr_create(const char *personal, const char *mailbox)
Create and populate a new Address.
Definition address.c:414
void mutt_addrlist_copy(struct AddressList *dst, const struct AddressList *src, bool prune)
Copy a list of addresses into another list.
Definition address.c:765
void mutt_addrlist_qualify(struct AddressList *al, const char *host)
Expand local names in an Address list using a hostname.
Definition address.c:680
bool mutt_addrlist_equal(const struct AddressList *ala, const struct AddressList *alb)
Compare two Address lists for equality.
Definition address.c:840
void mutt_addrlist_clear(struct AddressList *al)
Unlink and free all Address in an AddressList.
Definition address.c:1460
size_t mutt_addrlist_write_list(const struct AddressList *al, struct ListHead *list)
Write Addresses to a List.
Definition address.c:1217
void mutt_addr_free(struct Address **ptr)
Free a single Address.
Definition address.c:462
bool mutt_addr_valid_msgid(const char *msgid)
Is this a valid Message ID?
Definition address.c:792
size_t mutt_addr_write(struct Buffer *buf, struct Address *addr, bool display)
Write a single Address to a buffer.
Definition address.c:1050
bool mutt_addrlist_uses_unicode(const struct AddressList *al)
Do any of a list of addresses use Unicode characters.
Definition address.c:1522
void mutt_addr_cat(char *buf, size_t buflen, const char *value, const char *specials)
Copy a string and wrap it in quotes if it contains special characters.
Definition address.c:708
bool mutt_addr_cmp(const struct Address *a, const struct Address *b)
Compare two e-mail addresses.
Definition address.c:892
void mutt_addrlist_append(struct AddressList *al, struct Address *a)
Append an Address to an AddressList.
Definition address.c:1480
size_t mutt_addrlist_write_wrap(const struct AddressList *al, struct Buffer *buf, const char *header)
Write an AddressList to a buffer, perform line wrapping.
Definition address.c:1189
struct Address * mutt_addr_new(void)
Create a new Address.
Definition address.c:401
int mutt_addrlist_to_local(struct AddressList *al)
Convert an Address list from Punycode.
Definition address.c:1378
size_t mutt_addrlist_write(const struct AddressList *al, struct Buffer *buf, bool display)
Write an Address to a buffer.
Definition address.c:1206
bool mutt_addr_uses_unicode(const char *str)
Does this address use Unicode character.
Definition address.c:1502
int mutt_addrlist_parse2(struct AddressList *al, const char *s)
Parse a list of email addresses.
Definition address.c:644
struct Address * mutt_addr_copy(const struct Address *addr)
Copy the real address.
Definition address.c:745
bool mutt_addr_to_local(struct Address *a)
Convert an Address from Punycode.
Definition address.c:1340
void mutt_addrlist_remove_xrefs(const struct AddressList *a, struct AddressList *b)
Remove cross-references.
Definition address.c:1433
int mutt_addrlist_count_recips(const struct AddressList *al)
Count the number of Addresses with valid recipients.
Definition address.c:872
int mutt_addrlist_parse(struct AddressList *al, const char *s)
Parse a list of email addresses.
Definition address.c:480
void mutt_addrlist_prepend(struct AddressList *al, struct Address *a)
Prepend an Address to an AddressList.
Definition address.c:1491
void mutt_addrlist_write_file(const struct AddressList *al, FILE *fp, const char *header)
Wrapper for mutt_write_address()
Definition address.c:1248
int mutt_addrlist_to_intl(struct AddressList *al, char **err)
Convert an Address list to Punycode.
Definition address.c:1293
bool mutt_addr_to_intl(struct Address *a)
Convert an Address to Punycode.
Definition address.c:1263
int mutt_addrlist_remove(struct AddressList *al, const char *mailbox)
Remove an Address from a list.
Definition address.c:435
bool mutt_addrlist_search(const struct AddressList *haystack, const struct Address *needle)
Search for an e-mail address in a list.
Definition address.c:909
bool(* addr_predicate_t)(const struct Address *a)
Definition address.h:55
const char * mutt_addr_for_display(const struct Address *a)
Convert an Address for display purposes.
Definition address.c:1012
void mutt_addrlist_dedupe(struct AddressList *al)
Remove duplicate addresses.
Definition address.c:1397
Convenience wrapper for the library headers.
#define TAILQ_HEAD(name, type)
Definition queue.h:680
An email address.
Definition address.h:35
struct Buffer * personal
Real name of address.
Definition address.h:36
bool group
Group mailbox?
Definition address.h:38
struct Buffer * mailbox
Mailbox and host address.
Definition address.h:37
bool intl_checked
Checked for IDN?
Definition address.h:40
TAILQ_ENTRY(Address) entries
Linked list.
bool is_intl
International Domain Name.
Definition address.h:39
String manipulation buffer.
Definition buffer.h:36