NeoMutt  2024-03-23-23-gec7045
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
hdrline.c File Reference

String processing routines to generate the mail index. More...

#include "config.h"
#include <assert.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "mutt/lib.h"
#include "address/lib.h"
#include "config/lib.h"
#include "email/lib.h"
#include "core/lib.h"
#include "alias/lib.h"
#include "hdrline.h"
#include "attach/lib.h"
#include "color/lib.h"
#include "expando/lib.h"
#include "ncrypt/lib.h"
#include "hook.h"
#include "maillist.h"
#include "mutt_thread.h"
#include "muttlib.h"
#include "mx.h"
#include "sort.h"
#include "subjectrx.h"
#include "notmuch/lib.h"
+ Include dependency graph for hdrline.c:

Go to the source code of this file.

Data Structures

struct  HdrFormatInfo
 Data passed to index_format_str() More...
 

Enumerations

enum  FieldType {
  DISP_TO , DISP_CC , DISP_BCC , DISP_FROM ,
  DISP_PLAIN , DISP_MAX
}
 Header types. More...
 

Functions

static const char * make_from_prefix (enum FieldType disp)
 Create a prefix for an author field.
 
static void make_from (struct Envelope *env, char *buf, size_t buflen, bool do_lists, MuttFormatFlags flags)
 Generate a From: field (with optional prefix)
 
static void make_from_addr (struct Envelope *env, char *buf, size_t buflen, bool do_lists)
 Create a 'from' address for a reply email.
 
static bool user_in_addr (struct AddressList *al)
 Do any of the addresses refer to the user?
 
static enum ToChars user_is_recipient (struct Email *e)
 Is the user a recipient of the message.
 
static bool thread_is_new (struct Email *e)
 Does the email thread contain any new emails?
 
static bool thread_is_old (struct Email *e)
 Does the email thread contain any unread emails?
 
long index_date_recv_local_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Local received date and time - Implements ExpandoRenderData::get_number -.
 
void index_date_recv_local (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Local received date and time - Implements ExpandoRenderData::get_string -.
 
long index_date_local_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Local date and time - Implements ExpandoRenderData::get_number -.
 
void index_date_local (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Local date and time - Implements ExpandoRenderData::get_string -.
 
long index_date_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Sender's date and time - Implements ExpandoRenderData::get_number -.
 
void index_date (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Sender's date and time - Implements ExpandoRenderData::get_string -.
 
void index_format_hook (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: index-format-hook - Implements ExpandoRenderData::get_string -.
 
void index_a (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Author Address - Implements ExpandoRenderData::get_string -.
 
void index_A (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Reply-to address - Implements ExpandoRenderData::get_string -.
 
void index_b (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Filename - Implements ExpandoRenderData::get_string -.
 
void index_B (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Email list - Implements ExpandoRenderData::get_string -.
 
long index_c_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Number of bytes - Implements ExpandoRenderData::get_number -.
 
void index_c (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Number of bytes - Implements ExpandoRenderData::get_string -.
 
void index_cr (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Number of raw bytes - Implements ExpandoRenderData::get_string -.
 
long index_C_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Index number - Implements ExpandoRenderData::get_number -.
 
long index_d_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Senders Date and time - Implements ExpandoRenderData::get_number -.
 
void index_d (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Senders Date and time - Implements ExpandoRenderData::get_string -.
 
long index_D_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Local Date and time - Implements ExpandoRenderData::get_number -.
 
void index_D (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Local Date and time - Implements ExpandoRenderData::get_string -.
 
long index_e_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Thread index number - Implements ExpandoRenderData::get_number -.
 
long index_E_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Number of messages thread - Implements ExpandoRenderData::get_number -.
 
void index_f (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Sender - Implements ExpandoRenderData::get_string -.
 
void index_F (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Author name - Implements ExpandoRenderData::get_string -.
 
void index_Fp (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Plain author name - Implements ExpandoRenderData::get_string -.
 
void index_g (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Message tags - Implements ExpandoRenderData::get_string -.
 
void index_G (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Individual tag - Implements ExpandoRenderData::get_string -.
 
void index_H (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Spam attributes - Implements ExpandoRenderData::get_string -.
 
void index_i (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Message-id - Implements ExpandoRenderData::get_string -.
 
void index_I (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Initials of author - Implements ExpandoRenderData::get_string -.
 
void index_J (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Tags - Implements ExpandoRenderData::get_string -.
 
void index_K (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Mailing list - Implements ExpandoRenderData::get_string -.
 
long index_l_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Number of lines - Implements ExpandoRenderData::get_number -.
 
void index_L (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: List address - Implements ExpandoRenderData::get_string -.
 
long index_m_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Total number of message - Implements ExpandoRenderData::get_number -.
 
void index_M (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Number of hidden messages - Implements ExpandoRenderData::get_string -.
 
long index_M_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Number of hidden messages - Implements ExpandoRenderData::get_number -.
 
void index_n (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Author's real name - Implements ExpandoRenderData::get_string -.
 
long index_N_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Message score - Implements ExpandoRenderData::get_number -.
 
void index_O (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: List Name or Save folder - Implements ExpandoRenderData::get_string -.
 
void index_P (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Progress indicator - Implements ExpandoRenderData::get_string -.
 
void index_q (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Newsgroup name - Implements ExpandoRenderData::get_string -.
 
void index_r (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: To recipients - Implements ExpandoRenderData::get_string -.
 
void index_R (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Cc recipients - Implements ExpandoRenderData::get_string -.
 
void index_s (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Subject - Implements ExpandoRenderData::get_string -.
 
void index_S (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Status flag - Implements ExpandoRenderData::get_string -.
 
void index_t (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: To field - Implements ExpandoRenderData::get_string -.
 
void index_T (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: $to_chars flag - Implements ExpandoRenderData::get_string -.
 
void index_tree (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Thread tree - Implements ExpandoRenderData::get_string -.
 
void index_u (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: User name - Implements ExpandoRenderData::get_string -.
 
void index_v (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: First name - Implements ExpandoRenderData::get_string -.
 
void index_W (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Organization - Implements ExpandoRenderData::get_string -.
 
void index_x (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: X-Comment-To - Implements ExpandoRenderData::get_string -.
 
long index_X_num (const struct ExpandoNode *node, void *data, MuttFormatFlags flags)
 Index: Number of MIME attachments - Implements ExpandoRenderData::get_number -.
 
void index_y (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: X-Label - Implements ExpandoRenderData::get_string -.
 
void index_Y (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: X-Label (if different) - Implements ExpandoRenderData::get_string -.
 
void index_zc (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Message crypto flags - Implements ExpandoRenderData::get_string -.
 
void index_zs (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Message status flags - Implements ExpandoRenderData::get_string -.
 
void index_zt (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Message tag flags - Implements ExpandoRenderData::get_string -.
 
void index_Z (const struct ExpandoNode *node, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
 Index: Status flags - Implements ExpandoRenderData::get_string -.
 
int mutt_make_string (struct Buffer *buf, size_t max_cols, const struct Expando *exp, struct Mailbox *m, int inpgr, struct Email *e, MuttFormatFlags flags, const char *progress)
 Create formatted strings using mailbox expandos.
 

Variables

const struct ExpandoRenderData IndexRenderData []
 Callbacks for Index Expandos.
 

Detailed Description

String processing routines to generate the mail index.

Authors
  • Michael R. Elkins
  • Ian Zimmerman
  • Richard Russon
  • Stefan Assmann
  • Victor Fernandes
  • Pietro Cerutti
  • Ashish Panigrahi
  • Tóth János
  • наб
  • Dennis Schön

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 hdrline.c.

Enumeration Type Documentation

◆ FieldType

enum FieldType

Header types.

Strings for printing headers

Enumerator
DISP_TO 

To: string.

DISP_CC 

Cc: string.

DISP_BCC 

Bcc: string.

DISP_FROM 

From: string.

DISP_PLAIN 

Empty string.

DISP_MAX 

Definition at line 84 of file hdrline.c.

85{
86 DISP_TO,
87 DISP_CC,
88 DISP_BCC,
89 DISP_FROM,
92};
@ DISP_PLAIN
Empty string.
Definition: hdrline.c:90
@ DISP_TO
To: string.
Definition: hdrline.c:86
@ DISP_CC
Cc: string.
Definition: hdrline.c:87
@ DISP_BCC
Bcc: string.
Definition: hdrline.c:88
@ DISP_MAX
Definition: hdrline.c:91
@ DISP_FROM
From: string.
Definition: hdrline.c:89

Function Documentation

◆ make_from_prefix()

static const char * make_from_prefix ( enum FieldType  disp)
static

Create a prefix for an author field.

Parameters
dispType of field
Return values
ptrPrefix string (do not free it)

If $from_chars is set, pick an appropriate character from it. If not, use the default prefix: "To", "Cc", etc

Definition at line 102 of file hdrline.c.

103{
104 /* need 2 bytes at the end, one for the space, another for NUL */
105 static char padded[8];
106 static const char *long_prefixes[DISP_MAX] = {
107 [DISP_TO] = "To ", [DISP_CC] = "Cc ", [DISP_BCC] = "Bcc ",
108 [DISP_FROM] = "", [DISP_PLAIN] = "",
109 };
110
111 const struct MbTable *c_from_chars = cs_subset_mbtable(NeoMutt->sub, "from_chars");
112
113 if (!c_from_chars || !c_from_chars->chars || (c_from_chars->len == 0))
114 return long_prefixes[disp];
115
116 const char *pchar = mbtable_get_nth_wchar(c_from_chars, disp);
117 if (mutt_str_len(pchar) == 0)
118 return "";
119
120 snprintf(padded, sizeof(padded), "%s ", pchar);
121 return padded;
122}
struct MbTable * cs_subset_mbtable(const struct ConfigSubset *sub, const char *name)
Get a Multibyte table config item by name.
Definition: helpers.c:120
const char * mbtable_get_nth_wchar(const struct MbTable *table, int index)
Extract one char from a multi-byte table.
Definition: mbtable.c:331
size_t mutt_str_len(const char *a)
Calculate the length of a string, safely.
Definition: string.c:545
Multibyte character table.
Definition: mbtable.h:36
int len
Number of characters.
Definition: mbtable.h:38
char ** chars
The array of multibyte character strings.
Definition: mbtable.h:39
Container for Accounts, Notifications.
Definition: neomutt.h:41
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:45
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ make_from()

static void make_from ( struct Envelope env,
char *  buf,
size_t  buflen,
bool  do_lists,
MuttFormatFlags  flags 
)
static

Generate a From: field (with optional prefix)

Parameters
envEnvelope of the email
bufBuffer to store the result
buflenSize of the buffer
do_listsShould we check for mailing lists?
flagsFormat flags, see MuttFormatFlags

Generate the F or L field in $index_format. This is the author, or recipient of the email.

The field can optionally be prefixed by a character from $from_chars. If $from_chars is not set, the prefix will be, "To", "Cc", etc

Definition at line 138 of file hdrline.c.

140{
141 if (!env || !buf)
142 return;
143
144 bool me;
145 enum FieldType disp;
146 struct AddressList *name = NULL;
147
149
150 if (do_lists || me)
151 {
152 if (check_for_mailing_list(&env->to, make_from_prefix(DISP_TO), buf, buflen))
153 return;
154 if (check_for_mailing_list(&env->cc, make_from_prefix(DISP_CC), buf, buflen))
155 return;
156 }
157
158 if (me && !TAILQ_EMPTY(&env->to))
159 {
160 disp = (flags & MUTT_FORMAT_PLAIN) ? DISP_PLAIN : DISP_TO;
161 name = &env->to;
162 }
163 else if (me && !TAILQ_EMPTY(&env->cc))
164 {
165 disp = DISP_CC;
166 name = &env->cc;
167 }
168 else if (me && !TAILQ_EMPTY(&env->bcc))
169 {
170 disp = DISP_BCC;
171 name = &env->bcc;
172 }
173 else if (!TAILQ_EMPTY(&env->from))
174 {
175 disp = DISP_FROM;
176 name = &env->from;
177 }
178 else
179 {
180 *buf = '\0';
181 return;
182 }
183
184 snprintf(buf, buflen, "%s%s", make_from_prefix(disp), mutt_get_name(TAILQ_FIRST(name)));
185}
bool mutt_addr_is_user(const struct Address *addr)
Does the address belong to the user.
Definition: alias.c:605
static const char * make_from_prefix(enum FieldType disp)
Create a prefix for an author field.
Definition: hdrline.c:102
FieldType
Header types.
Definition: hdrline.c:85
bool check_for_mailing_list(struct AddressList *al, const char *pfx, char *buf, int buflen)
Search list of addresses for a mailing list.
Definition: maillist.c:79
#define TAILQ_FIRST(head)
Definition: queue.h:723
#define TAILQ_EMPTY(head)
Definition: queue.h:721
#define MUTT_FORMAT_PLAIN
Do not prepend DISP_TO, DISP_CC ...
Definition: render.h:39
const char * mutt_get_name(const struct Address *a)
Pick the best name to display from an address.
Definition: sort.c:134
struct AddressList to
Email's 'To' list.
Definition: envelope.h:60
struct AddressList cc
Email's 'Cc' list.
Definition: envelope.h:61
struct AddressList bcc
Email's 'Bcc' list.
Definition: envelope.h:62
struct AddressList from
Email's 'From' list.
Definition: envelope.h:59
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ make_from_addr()

static void make_from_addr ( struct Envelope env,
char *  buf,
size_t  buflen,
bool  do_lists 
)
static

Create a 'from' address for a reply email.

Parameters
envEnvelope of current email
bufBuffer for the result
buflenLength of buffer
do_listsIf true, check for mailing lists

Definition at line 194 of file hdrline.c.

195{
196 if (!env || !buf)
197 return;
198
199 bool me = mutt_addr_is_user(TAILQ_FIRST(&env->from));
200
201 if (do_lists || me)
202 {
203 if (check_for_mailing_list_addr(&env->to, buf, buflen))
204 return;
205 if (check_for_mailing_list_addr(&env->cc, buf, buflen))
206 return;
207 }
208
209 if (me && !TAILQ_EMPTY(&env->to))
210 snprintf(buf, buflen, "%s", buf_string(TAILQ_FIRST(&env->to)->mailbox));
211 else if (me && !TAILQ_EMPTY(&env->cc))
212 snprintf(buf, buflen, "%s", buf_string(TAILQ_FIRST(&env->cc)->mailbox));
213 else if (!TAILQ_EMPTY(&env->from))
214 mutt_str_copy(buf, buf_string(TAILQ_FIRST(&env->from)->mailbox), buflen);
215 else
216 *buf = '\0';
217}
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
Definition: buffer.h:97
bool check_for_mailing_list_addr(struct AddressList *al, char *buf, int buflen)
Check an address list for a mailing list.
Definition: maillist.c:103
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:630
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ user_in_addr()

static bool user_in_addr ( struct AddressList *  al)
static

Do any of the addresses refer to the user?

Parameters
alAddressList
Return values
trueAny of the addresses match one of the user's addresses

Definition at line 224 of file hdrline.c.

225{
226 struct Address *a = NULL;
227 TAILQ_FOREACH(a, al, entries)
228 if (mutt_addr_is_user(a))
229 return true;
230 return false;
231}
#define TAILQ_FOREACH(var, head, field)
Definition: queue.h:725
An email address.
Definition: address.h:36
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ user_is_recipient()

static enum ToChars user_is_recipient ( struct Email e)
static

Is the user a recipient of the message.

Parameters
eEmail to test
Return values
enumCharacter index into the $to_chars config variable

Definition at line 238 of file hdrline.c.

239{
240 if (!e || !e->env)
242
243 struct Envelope *env = e->env;
244
245 if (!e->recip_valid)
246 {
247 e->recip_valid = true;
248
250 {
252 }
253 else if (user_in_addr(&env->to))
254 {
255 if (TAILQ_NEXT(TAILQ_FIRST(&env->to), entries) || !TAILQ_EMPTY(&env->cc))
256 e->recipient = FLAG_CHAR_TO_TO; /* non-unique recipient */
257 else
258 e->recipient = FLAG_CHAR_TO_UNIQUE; /* unique recipient */
259 }
260 else if (user_in_addr(&env->cc))
261 {
263 }
264 else if (check_for_mailing_list(&env->to, NULL, NULL, 0))
265 {
267 }
268 else if (check_for_mailing_list(&env->cc, NULL, NULL, 0))
269 {
271 }
272 else if (user_in_addr(&env->reply_to))
273 {
275 }
276 else
277 {
279 }
280 }
281
282 return e->recipient;
283}
static bool user_in_addr(struct AddressList *al)
Do any of the addresses refer to the user?
Definition: hdrline.c:224
@ FLAG_CHAR_TO_ORIGINATOR
Character denoting that the user is originator.
Definition: hdrline.h:74
@ FLAG_CHAR_TO_UNIQUE
Character denoting that the user is unique recipient.
Definition: hdrline.h:71
@ FLAG_CHAR_TO_NOT_IN_THE_LIST
Character denoting that the user is not in list.
Definition: hdrline.h:70
@ FLAG_CHAR_TO_TO
Character denoting that the user is in the TO list.
Definition: hdrline.h:72
@ FLAG_CHAR_TO_CC
Character denoting that the user is in the CC list.
Definition: hdrline.h:73
@ FLAG_CHAR_TO_REPLY_TO
Character denoting that the user is in the Reply-To list.
Definition: hdrline.h:76
@ FLAG_CHAR_TO_SUBSCRIBED_LIST
Character denoting that the message is sent to a subscribed mailing list.
Definition: hdrline.h:75
#define TAILQ_NEXT(elm, field)
Definition: queue.h:832
bool recip_valid
Is_recipient is valid.
Definition: email.h:107
struct Envelope * env
Envelope information.
Definition: email.h:68
short recipient
User_is_recipient()'s return value, cached.
Definition: email.h:119
The header of an Email.
Definition: envelope.h:57
struct AddressList reply_to
Email's 'reply-to'.
Definition: envelope.h:64
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ thread_is_new()

static bool thread_is_new ( struct Email e)
static

Does the email thread contain any new emails?

Parameters
eEmail
Return values
trueThread contains new mail

Definition at line 290 of file hdrline.c.

291{
292 return e->collapsed && (e->num_hidden > 1) && (mutt_thread_contains_unread(e) == 1);
293}
#define mutt_thread_contains_unread(e)
Definition: mutt_thread.h:109
bool collapsed
Is this message part of a collapsed thread?
Definition: email.h:123
size_t num_hidden
Number of hidden messages in this view (only valid when collapsed is set)
Definition: email.h:126
+ Here is the caller graph for this function:

◆ thread_is_old()

static bool thread_is_old ( struct Email e)
static

Does the email thread contain any unread emails?

Parameters
eEmail
Return values
trueThread contains unread mail

Definition at line 300 of file hdrline.c.

301{
302 return e->collapsed && (e->num_hidden > 1) && (mutt_thread_contains_unread(e) == 2);
303}
+ Here is the caller graph for this function:

◆ mutt_make_string()

int mutt_make_string ( struct Buffer buf,
size_t  max_cols,
const struct Expando exp,
struct Mailbox m,
int  inpgr,
struct Email e,
MuttFormatFlags  flags,
const char *  progress 
)

Create formatted strings using mailbox expandos.

Parameters
bufBuffer for the result
max_colsNumber of screen columns (-1 means unlimited)
expExpando containing expando tree
mMailbox
inpgrMessage shown in the pager
eEmail
flagsFlags, see MuttFormatFlags
progressPager progress string
Return values
numNumber of screen columns used

Definition at line 1797 of file hdrline.c.

1800{
1801 if (!exp)
1802 return 0;
1803
1804 struct HdrFormatInfo hfi = { 0 };
1805
1806 hfi.email = e;
1807 hfi.mailbox = m;
1808 hfi.msg_in_pager = inpgr;
1809 hfi.pager_progress = progress;
1810
1811 return expando_render(exp, IndexRenderData, &hfi, flags, max_cols, buf);
1812}
int expando_render(const struct Expando *exp, const struct ExpandoRenderData *rdata, void *data, MuttFormatFlags flags, int max_cols, struct Buffer *buf)
Render an Expando + data into a string.
Definition: expando.c:109
const struct ExpandoRenderData IndexRenderData[]
Callbacks for Index Expandos.
Definition: hdrline.c:66
Data passed to index_format_str()
Definition: hdrline.c:72
struct Email * email
Current Email.
Definition: hdrline.c:75
int msg_in_pager
Index of Email displayed in the Pager.
Definition: hdrline.c:74
struct Mailbox * mailbox
Current Mailbox.
Definition: hdrline.c:73
const char * pager_progress
String representing Pager position through Email.
Definition: hdrline.c:76
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ IndexRenderData

const struct ExpandoRenderData IndexRenderData

Callbacks for Index Expandos.

See also
IndexFormatDef, ExpandoDataEmail, ExpandoDataEnvelope, ExpandoDataGlobal, ExpandoDataMailbox

Definition at line 66 of file hdrline.c.