NeoMutt
2025-12-11-1039-g550ac6
Teaching an old dog new tricks
DOXYGEN
Toggle main menu visibility
Loading...
Searching...
No Matches
expando_greeting.c
Go to the documentation of this file.
1
22
28
29
#include <stdbool.h>
30
#include <string.h>
31
#include "
mutt/lib.h
"
32
#include "
address/lib.h
"
33
#include "
email/lib.h
"
34
#include "
expando_greeting.h
"
35
#include "
expando/lib.h
"
36
40
static
void
greeting_real_name
(
const
struct
ExpandoNode
*node,
void
*data,
41
MuttFormatFlags
flags,
struct
Buffer
*buf)
42
{
43
const
struct
Email
*e = data;
44
const
struct
Address
*to =
TAILQ_FIRST
(&e->
env
->
to
);
45
46
const
char
*s =
mutt_get_name
(to);
47
buf_strcpy
(buf, s);
48
}
49
53
static
void
greeting_login_name
(
const
struct
ExpandoNode
*node,
void
*data,
54
MuttFormatFlags
flags,
struct
Buffer
*buf)
55
{
56
const
struct
Email
*e = data;
57
const
struct
Address
*to =
TAILQ_FIRST
(&e->
env
->
to
);
58
59
char
tmp[128] = { 0 };
60
char
*p = NULL;
61
62
if
(to)
63
{
64
mutt_str_copy
(tmp,
mutt_addr_for_display
(to),
sizeof
(tmp));
65
if
((p = strpbrk(tmp,
"%@"
)))
66
{
67
*p =
'\0'
;
68
}
69
}
70
71
buf_strcpy
(buf, tmp);
72
}
73
77
static
void
greeting_first_name
(
const
struct
ExpandoNode
*node,
void
*data,
78
MuttFormatFlags
flags,
struct
Buffer
*buf)
79
{
80
const
struct
Email
*e = data;
81
const
struct
Address
*to =
TAILQ_FIRST
(&e->
env
->
to
);
82
const
struct
Address
*cc =
TAILQ_FIRST
(&e->
env
->
cc
);
83
84
char
tmp[128] = { 0 };
85
char
*p = NULL;
86
87
if
(to)
88
{
89
const
char
*s =
mutt_get_name
(to);
90
mutt_str_copy
(tmp, s,
sizeof
(tmp));
91
}
92
else
if
(cc)
93
{
94
const
char
*s =
mutt_get_name
(cc);
95
mutt_str_copy
(tmp, s,
sizeof
(tmp));
96
}
97
98
if
((p = strpbrk(tmp,
" %@"
)))
99
*p =
'\0'
;
100
101
buf_strcpy
(buf, tmp);
102
}
103
109
const
struct
ExpandoRenderCallback
GreetingRenderCallbacks
[] = {
110
// clang-format off
111
{
ED_ENVELOPE
,
ED_ENV_REAL_NAME
,
greeting_real_name
, NULL },
112
{
ED_ENVELOPE
,
ED_ENV_USER_NAME
,
greeting_login_name
, NULL },
113
{
ED_ENVELOPE
,
ED_ENV_FIRST_NAME
,
greeting_first_name
, NULL },
114
{ -1, -1, NULL, NULL },
115
// clang-format on
116
};
mutt_addr_for_display
const char * mutt_addr_for_display(const struct Address *a)
Convert an Address for display purposes.
Definition
address.c:1023
lib.h
Email Address Handling.
buf_strcpy
size_t buf_strcpy(struct Buffer *buf, const char *s)
Copy a string into a Buffer.
Definition
buffer.c:401
ED_ENVELOPE
@ ED_ENVELOPE
Envelope ED_ENV_ ExpandoDataEnvelope.
Definition
domain.h:42
lib.h
Structs that make up an email.
mutt_get_name
const char * mutt_get_name(const struct Address *a)
Pick the best name to display from an address.
Definition
sort.c:138
ED_ENV_REAL_NAME
@ ED_ENV_REAL_NAME
Envelope.to (first).
Definition
envelope.h:111
ED_ENV_USER_NAME
@ ED_ENV_USER_NAME
Envelope.to (first).
Definition
envelope.h:122
ED_ENV_FIRST_NAME
@ ED_ENV_FIRST_NAME
Envelope.from, Envelope.to, Envelope.cc.
Definition
envelope.h:101
lib.h
Parse Expando string.
GreetingRenderCallbacks
const struct ExpandoRenderCallback GreetingRenderCallbacks[]
Callbacks for Greeting Expandos.
Definition
expando_greeting.c:109
expando_greeting.h
Greeting Expando definitions.
greeting_login_name
static void greeting_login_name(const struct ExpandoNode *node, void *data, MuttFormatFlags flags, struct Buffer *buf)
Greeting: Login name - Implements get_string_t -.
Definition
expando_greeting.c:53
greeting_real_name
static void greeting_real_name(const struct ExpandoNode *node, void *data, MuttFormatFlags flags, struct Buffer *buf)
Greeting: Real name - Implements get_string_t -.
Definition
expando_greeting.c:40
greeting_first_name
static void greeting_first_name(const struct ExpandoNode *node, void *data, MuttFormatFlags flags, struct Buffer *buf)
Greeting: First name - Implements get_string_t -.
Definition
expando_greeting.c:77
lib.h
Convenience wrapper for the library headers.
mutt_str_copy
size_t mutt_str_copy(char *dest, const char *src, size_t dsize)
Copy a string into a buffer (guaranteeing NUL-termination).
Definition
string.c:587
TAILQ_FIRST
#define TAILQ_FIRST(head)
Definition
queue.h:780
MuttFormatFlags
uint8_t MuttFormatFlags
Definition
render.h:45
Address
An email address.
Definition
address.h:35
Buffer
String manipulation buffer.
Definition
buffer.h:36
Email
The envelope/body of an email.
Definition
email.h:39
Email::env
struct Envelope * env
Envelope information.
Definition
email.h:68
Envelope::to
struct AddressList to
Email's 'To' list.
Definition
envelope.h:60
Envelope::cc
struct AddressList cc
Email's 'Cc' list.
Definition
envelope.h:61
ExpandoNode
Basic Expando Node.
Definition
node.h:67
ExpandoRenderCallback
Definition
render.h:82