NeoMutt  2021-02-05-666-ge300cd
Teaching an old dog new tricks
DOXYGEN
hdrline.c File Reference

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

#include "config.h"
#include <locale.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.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 "gui/lib.h"
#include "hdrline.h"
#include "ncrypt/lib.h"
#include "attachments.h"
#include "format_flags.h"
#include "hook.h"
#include "maillist.h"
#include "mutt_globals.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  FlagChars {
  FLAG_CHAR_TAGGED, FLAG_CHAR_IMPORTANT, FLAG_CHAR_DELETED, FLAG_CHAR_DELETED_ATTACH,
  FLAG_CHAR_REPLIED, FLAG_CHAR_OLD, FLAG_CHAR_NEW, FLAG_CHAR_OLD_THREAD,
  FLAG_CHAR_NEW_THREAD, FLAG_CHAR_SEMPTY, FLAG_CHAR_ZEMPTY
}
 Index into the $flag_chars variable ($flag_chars) More...
 
enum  CryptChars {
  FLAG_CHAR_CRYPT_GOOD_SIGN, FLAG_CHAR_CRYPT_ENCRYPTED, FLAG_CHAR_CRYPT_SIGNED, FLAG_CHAR_CRYPT_CONTAINS_KEY,
  FLAG_CHAR_CRYPT_NO_CRYPTO
}
 Index into the $crypt_chars variable ($crypt_chars) More...
 
enum  FieldType {
  DISP_TO, DISP_CC, DISP_BCC, DISP_FROM,
  DISP_PLAIN, DISP_MAX
}
 Header types. More...
 

Functions

static size_t add_index_color (char *buf, size_t buflen, MuttFormatFlags flags, char color)
 Insert a color marker into a string. More...
 
static const char * get_nth_wchar (const struct MbTable *table, int index)
 Extract one char from a multi-byte table. More...
 
static const char * make_from_prefix (enum FieldType disp)
 Create a prefix for an author field. More...
 
static void make_from (struct Envelope *env, char *buf, size_t buflen, bool do_lists, MuttFormatFlags flags)
 Generate a From: field (with optional prefix) More...
 
static void make_from_addr (struct Envelope *env, char *buf, size_t buflen, bool do_lists)
 Create a 'from' address for a reply email. More...
 
static bool user_in_addr (struct AddressList *al)
 Do any of the addresses refer to the user? More...
 
static int user_is_recipient (struct Email *e)
 Is the user a recipient of the message. More...
 
static bool thread_is_new (struct Email *e)
 Does the email thread contain any new emails? More...
 
static bool thread_is_old (struct Email *e)
 Does the email thread contain any unread emails? More...
 
static const char * index_format_str (char *buf, size_t buflen, size_t col, int cols, char op, const char *src, const char *prec, const char *if_str, const char *else_str, intptr_t data, MuttFormatFlags flags)
 Format a string for the index list - Implements format_t -
Expando Description
%a Address of the author
%A Reply-to address (if present; otherwise: address of author)
%b Filename of the original message folder (think mailbox)
%B The list to which the email was sent, or else the folder name (b)
%C Current message number
%c Number of characters (bytes) in the body of the message
%cr Number of characters (bytes) in the message, including header
%D Date and time of message using $date_format and local timezone
%d Date and time of message using $date_format and sender's timezone
%e Current message number in thread
%E Number of messages in current thread
%Fp Like F, but plain.
More...
 
void mutt_make_string (char *buf, size_t buflen, int cols, const char *s, struct Mailbox *m, int inpgr, struct Email *e, MuttFormatFlags flags, const char *progress)
 Create formatted strings using mailbox expandos. More...
 

Detailed Description

String processing routines to generate the mail index.

Authors
  • Michael R. Elkins
  • Richard Russon
  • Ian Zimmerman
  • Pietro Cerutti

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

◆ FlagChars

enum FlagChars

Index into the $flag_chars variable ($flag_chars)

Enumerator
FLAG_CHAR_TAGGED 

Character denoting a tagged email.

FLAG_CHAR_IMPORTANT 

Character denoting a important (flagged) email.

FLAG_CHAR_DELETED 

Character denoting a deleted email.

FLAG_CHAR_DELETED_ATTACH 

Character denoting a deleted attachment.

FLAG_CHAR_REPLIED 

Character denoting an email that has been replied to.

FLAG_CHAR_OLD 

Character denoting an email that has been read.

FLAG_CHAR_NEW 

Character denoting an unread email.

FLAG_CHAR_OLD_THREAD 

Character denoting a thread of emails that has been read.

FLAG_CHAR_NEW_THREAD 

Character denoting a thread containing at least one new email.

FLAG_CHAR_SEMPTY 

Character denoting a read email, $index_format S expando.

FLAG_CHAR_ZEMPTY 

Character denoting a read email, $index_format Z expando.

Definition at line 77 of file hdrline.c.

78 {
90 };
Character denoting a tagged email.
Definition: hdrline.c:79
Character denoting a important (flagged) email.
Definition: hdrline.c:80
Character denoting a thread containing at least one new email.
Definition: hdrline.c:87
Character denoting a read email, $index_format S expando.
Definition: hdrline.c:88
Character denoting a deleted attachment.
Definition: hdrline.c:82
Character denoting an email that has been read.
Definition: hdrline.c:84
Character denoting a thread of emails that has been read.
Definition: hdrline.c:86
Character denoting an email that has been replied to.
Definition: hdrline.c:83
Character denoting a read email, $index_format Z expando.
Definition: hdrline.c:89
Character denoting a deleted email.
Definition: hdrline.c:81
Character denoting an unread email.
Definition: hdrline.c:85

◆ CryptChars

enum CryptChars

Index into the $crypt_chars variable ($crypt_chars)

Enumerator
FLAG_CHAR_CRYPT_GOOD_SIGN 

Character denoting a message signed with a verified key.

FLAG_CHAR_CRYPT_ENCRYPTED 

Character denoting a message is PGP-encrypted.

FLAG_CHAR_CRYPT_SIGNED 

Character denoting a message is signed.

FLAG_CHAR_CRYPT_CONTAINS_KEY 

Character denoting a message contains a PGP key.

FLAG_CHAR_CRYPT_NO_CRYPTO 

Character denoting a message has no cryptography information.

Definition at line 95 of file hdrline.c.

96 {
102 };
Character denoting a message contains a PGP key.
Definition: hdrline.c:100
Character denoting a message signed with a verified key.
Definition: hdrline.c:97
Character denoting a message is PGP-encrypted.
Definition: hdrline.c:98
Character denoting a message has no cryptography information.
Definition: hdrline.c:101
Character denoting a message is signed.
Definition: hdrline.c:99

◆ 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 109 of file hdrline.c.

110 {
111  DISP_TO,
112  DISP_CC,
113  DISP_BCC,
114  DISP_FROM,
115  DISP_PLAIN,
116  DISP_MAX,
117 };
Bcc: string.
Definition: hdrline.c:113
Cc: string.
Definition: hdrline.c:112
Empty string.
Definition: hdrline.c:115
From: string.
Definition: hdrline.c:114
To: string.
Definition: hdrline.c:111

Function Documentation

◆ add_index_color()

static size_t add_index_color ( char *  buf,
size_t  buflen,
MuttFormatFlags  flags,
char  color 
)
static

Insert a color marker into a string.

Parameters
bufBuffer to store marker
buflenBuffer length
flagsFlags, see MuttFormatFlags
colorColor, e.g. MT_COLOR_MESSAGE
Return values
numCharacters written

The colors are stored as "magic" strings embedded in the text.

Definition at line 129 of file hdrline.c.

130 {
131  /* only add color markers if we are operating on main index entries. */
132  if (!(flags & MUTT_FORMAT_INDEX))
133  return 0;
134 
135  /* this item is going to be passed to an external filter */
136  if (flags & MUTT_FORMAT_NOFILTER)
137  return 0;
138 
139  if (color == MT_COLOR_INDEX)
140  { /* buf might be uninitialized other cases */
141  const size_t len = mutt_str_len(buf);
142  buf += len;
143  buflen -= len;
144  }
145 
146  if (buflen <= 2)
147  return 0;
148 
149  buf[0] = MUTT_SPECIAL_INDEX;
150  buf[1] = color;
151  buf[2] = '\0';
152 
153  return 2;
154 }
#define MUTT_FORMAT_INDEX
This is a main index entry.
Definition: format_flags.h:36
size_t mutt_str_len(const char *a)
Calculate the length of a string, safely.
Definition: string.c:664
Colour indicator.
Definition: mutt_thread.h:57
#define MUTT_FORMAT_NOFILTER
Do not allow filtering on this pass.
Definition: format_flags.h:37
Index: default colour (takes a pattern)
Definition: color.h:81
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_nth_wchar()

static const char* get_nth_wchar ( const struct MbTable table,
int  index 
)
static

Extract one char from a multi-byte table.

Parameters
tableMulti-byte table
indexSelect this character
Return values
ptrString pointer to the character

Extract one multi-byte character from a string table. If the index is invalid, then a space character will be returned. If the character selected is '
' (Ctrl-M), then "" will be returned.

Definition at line 166 of file hdrline.c.

167 {
168  if (!table || !table->chars || (index < 0) || (index >= table->len))
169  return " ";
170 
171  if (table->chars[index][0] == '\r')
172  return "";
173 
174  return table->chars[index];
175 }
char ** chars
The array of multibyte character strings.
Definition: mbtable.h:37
int len
Number of characters.
Definition: mbtable.h:36
+ Here is the caller graph for this function:

◆ 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 185 of file hdrline.c.

186 {
187  /* need 2 bytes at the end, one for the space, another for NUL */
188  static char padded[8];
189  static const char *long_prefixes[DISP_MAX] = {
190  [DISP_TO] = "To ", [DISP_CC] = "Cc ", [DISP_BCC] = "Bcc ",
191  [DISP_FROM] = "", [DISP_PLAIN] = "",
192  };
193 
194  const struct MbTable *c_from_chars =
195  cs_subset_mbtable(NeoMutt->sub, "from_chars");
196 
197  if (!c_from_chars || !c_from_chars->chars || (c_from_chars->len == 0))
198  return long_prefixes[disp];
199 
200  const char *pchar = get_nth_wchar(c_from_chars, disp);
201  if (mutt_str_len(pchar) == 0)
202  return "";
203 
204  snprintf(padded, sizeof(padded), "%s ", pchar);
205  return padded;
206 }
Bcc: string.
Definition: hdrline.c:113
char ** chars
The array of multibyte character strings.
Definition: mbtable.h:37
Cc: string.
Definition: hdrline.c:112
multibyte character table
Definition: mbtable.h:33
Container for Accounts, Notifications.
Definition: neomutt.h:36
Empty string.
Definition: hdrline.c:115
From: string.
Definition: hdrline.c:114
static const char * get_nth_wchar(const struct MbTable *table, int index)
Extract one char from a multi-byte table.
Definition: hdrline.c:166
struct MbTable * cs_subset_mbtable(const struct ConfigSubset *sub, const char *name)
Get a Multibyte table config item by name.
Definition: helpers.c:145
size_t mutt_str_len(const char *a)
Calculate the length of a string, safely.
Definition: string.c:664
To: string.
Definition: hdrline.c:111
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:39
int len
Number of characters.
Definition: mbtable.h:36
+ 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 222 of file hdrline.c.

224 {
225  if (!env || !buf)
226  return;
227 
228  bool me;
229  enum FieldType disp;
230  struct AddressList *name = NULL;
231 
232  me = mutt_addr_is_user(TAILQ_FIRST(&env->from));
233 
234  if (do_lists || me)
235  {
236  if (check_for_mailing_list(&env->to, make_from_prefix(DISP_TO), buf, buflen))
237  return;
238  if (check_for_mailing_list(&env->cc, make_from_prefix(DISP_CC), buf, buflen))
239  return;
240  }
241 
242  if (me && !TAILQ_EMPTY(&env->to))
243  {
244  disp = (flags & MUTT_FORMAT_PLAIN) ? DISP_PLAIN : DISP_TO;
245  name = &env->to;
246  }
247  else if (me && !TAILQ_EMPTY(&env->cc))
248  {
249  disp = DISP_CC;
250  name = &env->cc;
251  }
252  else if (me && !TAILQ_EMPTY(&env->bcc))
253  {
254  disp = DISP_BCC;
255  name = &env->bcc;
256  }
257  else if (!TAILQ_EMPTY(&env->from))
258  {
259  disp = DISP_FROM;
260  name = &env->from;
261  }
262  else
263  {
264  *buf = '\0';
265  return;
266  }
267 
268  snprintf(buf, buflen, "%s%s", make_from_prefix(disp), mutt_get_name(TAILQ_FIRST(name)));
269 }
Bcc: string.
Definition: hdrline.c:113
#define TAILQ_FIRST(head)
Definition: queue.h:723
struct AddressList bcc
Email&#39;s &#39;Bcc&#39; list.
Definition: envelope.h:60
Cc: string.
Definition: hdrline.c:112
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:78
struct AddressList from
Email&#39;s &#39;From&#39; list.
Definition: envelope.h:57
struct AddressList cc
Email&#39;s &#39;Cc&#39; list.
Definition: envelope.h:59
Empty string.
Definition: hdrline.c:115
From: string.
Definition: hdrline.c:114
static const char * make_from_prefix(enum FieldType disp)
Create a prefix for an author field.
Definition: hdrline.c:185
#define MUTT_FORMAT_PLAIN
Do not prepend DISP_TO, DISP_CC ...
Definition: format_flags.h:38
To: string.
Definition: hdrline.c:111
FieldType
Header types.
Definition: hdrline.c:109
bool mutt_addr_is_user(const struct Address *addr)
Does the address belong to the user.
Definition: alias.c:562
struct AddressList to
Email&#39;s &#39;To&#39; list.
Definition: envelope.h:58
#define TAILQ_EMPTY(head)
Definition: queue.h:721
const char * mutt_get_name(const struct Address *a)
Pick the best name to display from an address.
Definition: sort.c:136
+ 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 278 of file hdrline.c.

279 {
280  if (!env || !buf)
281  return;
282 
283  bool me = mutt_addr_is_user(TAILQ_FIRST(&env->from));
284 
285  if (do_lists || me)
286  {
287  if (check_for_mailing_list_addr(&env->to, buf, buflen))
288  return;
289  if (check_for_mailing_list_addr(&env->cc, buf, buflen))
290  return;
291  }
292 
293  if (me && !TAILQ_EMPTY(&env->to))
294  snprintf(buf, buflen, "%s", TAILQ_FIRST(&env->to)->mailbox);
295  else if (me && !TAILQ_EMPTY(&env->cc))
296  snprintf(buf, buflen, "%s", TAILQ_FIRST(&env->cc)->mailbox);
297  else if (!TAILQ_EMPTY(&env->from))
298  mutt_str_copy(buf, TAILQ_FIRST(&env->from)->mailbox, buflen);
299  else
300  *buf = '\0';
301 }
#define TAILQ_FIRST(head)
Definition: queue.h:723
struct AddressList from
Email&#39;s &#39;From&#39; list.
Definition: envelope.h:57
struct AddressList cc
Email&#39;s &#39;Cc&#39; list.
Definition: envelope.h:59
bool check_for_mailing_list_addr(struct AddressList *al, char *buf, int buflen)
Check an address list for a mailing list.
Definition: maillist.c:102
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:749
bool mutt_addr_is_user(const struct Address *addr)
Does the address belong to the user.
Definition: alias.c:562
struct AddressList to
Email&#39;s &#39;To&#39; list.
Definition: envelope.h:58
#define TAILQ_EMPTY(head)
Definition: queue.h:721
+ 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 308 of file hdrline.c.

309 {
310  struct Address *a = NULL;
311  TAILQ_FOREACH(a, al, entries)
312  if (mutt_addr_is_user(a))
313  return true;
314  return false;
315 }
#define TAILQ_FOREACH(var, head, field)
Definition: queue.h:725
An email address.
Definition: address.h:35
bool mutt_addr_is_user(const struct Address *addr)
Does the address belong to the user.
Definition: alias.c:562
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ user_is_recipient()

static int user_is_recipient ( struct Email e)
static

Is the user a recipient of the message.

Parameters
eEmail to test
Return values
0User is not in list
1User is unique recipient
2User is in the TO list
3User is in the CC list
4User is originator
5Sent to a subscribed mailinglist
6User is in the Reply-To list

Definition at line 328 of file hdrline.c.

329 {
330  if (!e || !e->env)
331  return 0;
332 
333  struct Envelope *env = e->env;
334 
335  if (!e->recip_valid)
336  {
337  e->recip_valid = true;
338 
339  if (mutt_addr_is_user(TAILQ_FIRST(&env->from)))
340  e->recipient = 4;
341  else if (user_in_addr(&env->to))
342  {
343  if (TAILQ_NEXT(TAILQ_FIRST(&env->to), entries) || !TAILQ_EMPTY(&env->cc))
344  e->recipient = 2; /* non-unique recipient */
345  else
346  e->recipient = 1; /* unique recipient */
347  }
348  else if (user_in_addr(&env->cc))
349  e->recipient = 3;
350  else if (check_for_mailing_list(&env->to, NULL, NULL, 0))
351  e->recipient = 5;
352  else if (check_for_mailing_list(&env->cc, NULL, NULL, 0))
353  e->recipient = 5;
354  else if (user_in_addr(&env->reply_to))
355  e->recipient = 6;
356  else
357  e->recipient = 0;
358  }
359 
360  return e->recipient;
361 }
#define TAILQ_FIRST(head)
Definition: queue.h:723
struct AddressList reply_to
Email&#39;s &#39;reply-to&#39;.
Definition: envelope.h:62
static bool user_in_addr(struct AddressList *al)
Do any of the addresses refer to the user?
Definition: hdrline.c:308
short recipient
User_is_recipient()&#39;s return value, cached.
Definition: email.h:78
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:78
struct AddressList from
Email&#39;s &#39;From&#39; list.
Definition: envelope.h:57
struct Envelope * env
Envelope information.
Definition: email.h:90
struct AddressList cc
Email&#39;s &#39;Cc&#39; list.
Definition: envelope.h:59
bool mutt_addr_is_user(const struct Address *addr)
Does the address belong to the user.
Definition: alias.c:562
bool recip_valid
Is_recipient is valid.
Definition: email.h:58
struct AddressList to
Email&#39;s &#39;To&#39; list.
Definition: envelope.h:58
#define TAILQ_NEXT(elm, field)
Definition: queue.h:832
#define TAILQ_EMPTY(head)
Definition: queue.h:721
The header of an Email.
Definition: envelope.h:54
+ 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 368 of file hdrline.c.

369 {
370  return e->collapsed && (e->num_hidden > 1) && (mutt_thread_contains_unread(e) == 1);
371 }
#define mutt_thread_contains_unread(e)
Definition: mutt_thread.h:90
size_t num_hidden
Number of hidden messages in this view (only valid when collapsed is set)
Definition: email.h:75
bool collapsed
Is this message part of a collapsed thread?
Definition: email.h:73
+ 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 378 of file hdrline.c.

379 {
380  return e->collapsed && (e->num_hidden > 1) && (mutt_thread_contains_unread(e) == 2);
381 }
#define mutt_thread_contains_unread(e)
Definition: mutt_thread.h:90
size_t num_hidden
Number of hidden messages in this view (only valid when collapsed is set)
Definition: email.h:75
bool collapsed
Is this message part of a collapsed thread?
Definition: email.h:73
+ Here is the caller graph for this function:

◆ mutt_make_string()

void mutt_make_string ( char *  buf,
size_t  buflen,
int  cols,
const char *  s,
struct Mailbox m,
int  inpgr,
struct Email e,
MuttFormatFlags  flags,
const char *  progress 
)

Create formatted strings using mailbox expandos.

Parameters
bufBuffer for the result
buflenBuffer length
colsNumber of screen columns (OPTIONAL)
sprintf-line format string
mMailbox
inpgrMessage shown in the pager
eEmail
flagsFlags, see MuttFormatFlags
progressPager progress string

Definition at line 1409 of file hdrline.c.

1412 {
1413  struct HdrFormatInfo hfi = { 0 };
1414 
1415  hfi.email = e;
1416  hfi.mailbox = m;
1417  hfi.msg_in_pager = inpgr;
1418  hfi.pager_progress = progress;
1419 
1420  mutt_expando_format(buf, buflen, 0, cols, s, index_format_str, (intptr_t) &hfi, flags);
1421 }
void mutt_expando_format(char *buf, size_t buflen, size_t col, int cols, const char *src, format_t callback, intptr_t data, MuttFormatFlags flags)
Expand expandos (x) in a string -.
Definition: muttlib.c:780
Data passed to index_format_str()
Definition: hdrline.c:66
struct Mailbox * mailbox
Definition: hdrline.c:68
static const char * index_format_str(char *buf, size_t buflen, size_t col, int cols, char op, const char *src, const char *prec, const char *if_str, const char *else_str, intptr_t data, MuttFormatFlags flags)
Format a string for the index list - Implements format_t -Expando Description %a Address of the auth...
Definition: hdrline.c:440
int msg_in_pager
Definition: hdrline.c:69
const char * pager_progress
Definition: hdrline.c:71
struct Email * email
Definition: hdrline.c:70
+ Here is the call graph for this function:
+ Here is the caller graph for this function: