NeoMutt  2023-05-17-33-gce4425
Teaching an old dog new tricks
DOXYGEN
msg_save_hcache()

Save message to the header cache. More...

+ Collaboration diagram for msg_save_hcache():

Functions

static int comp_msg_save_hcache (struct Mailbox *m, struct Email *e)
 Save message to the header cache - Implements MxOps::msg_save_hcache() -. More...
 
int imap_msg_save_hcache (struct Mailbox *m, struct Email *e)
 Save message to the header cache - Implements MxOps::msg_save_hcache() -. More...
 
static int maildir_msg_save_hcache (struct Mailbox *m, struct Email *e)
 Save message to the header cache - Implements MxOps::msg_save_hcache() -. More...
 
static int mh_msg_save_hcache (struct Mailbox *m, struct Email *e)
 Save message to the header cache - Implements MxOps::msg_save_hcache() -. More...
 
static int pop_msg_save_hcache (struct Mailbox *m, struct Email *e)
 Save message to the header cache - Implements MxOps::msg_save_hcache() -. More...
 

Detailed Description

Save message to the header cache.

Parameters
mMailbox
eEmail
Return values
0Success
-1Failure
Precondition
m is not NULL
e is not NULL

Function Documentation

◆ comp_msg_save_hcache()

static int comp_msg_save_hcache ( struct Mailbox m,
struct Email e 
)
static

Save message to the header cache - Implements MxOps::msg_save_hcache() -.

Definition at line 835 of file compress.c.

836{
837 if (!m->compress_info)
838 return 0;
839
840 struct CompressInfo *ci = m->compress_info;
841
842 const struct MxOps *ops = ci->child_ops;
843 if (!ops || !ops->msg_save_hcache)
844 return 0;
845
846 return ops->msg_save_hcache(m, e);
847}
Private data for compress.
Definition: lib.h:47
const struct MxOps * child_ops
callbacks of de-compressed file
Definition: lib.h:52
void * compress_info
Compressed mbox module private data.
Definition: mailbox.h:120
Definition: mxapi.h:112
int(* msg_save_hcache)(struct Mailbox *m, struct Email *e)
Definition: mxapi.h:310

◆ imap_msg_save_hcache()

int imap_msg_save_hcache ( struct Mailbox m,
struct Email e 
)

Save message to the header cache - Implements MxOps::msg_save_hcache() -.

Definition at line 2163 of file message.c.

2164{
2165 int rc = 0;
2166#ifdef USE_HCACHE
2167 bool close_hc = true;
2169 struct ImapMboxData *mdata = imap_mdata_get(m);
2170 if (!mdata || !adata)
2171 return -1;
2172 if (mdata->hcache)
2173 close_hc = false;
2174 else
2175 imap_hcache_open(adata, mdata);
2176 rc = imap_hcache_put(mdata, e);
2177 if (close_hc)
2179#endif
2180 return rc;
2181}
struct ImapAccountData * imap_adata_get(struct Mailbox *m)
Get the Account data for this mailbox.
Definition: adata.c:90
struct ImapMboxData * imap_mdata_get(struct Mailbox *m)
Get the Mailbox data for this mailbox.
Definition: mdata.c:60
int imap_hcache_put(struct ImapMboxData *mdata, struct Email *e)
Add an entry to the header cache.
Definition: util.c:378
void imap_hcache_close(struct ImapMboxData *mdata)
Close the header cache.
Definition: util.c:337
void imap_hcache_open(struct ImapAccountData *adata, struct ImapMboxData *mdata)
Open a header cache.
Definition: util.c:296
void * adata
Private data (for Mailbox backends)
Definition: account.h:43
IMAP-specific Account data -.
Definition: adata.h:40
IMAP-specific Mailbox data -.
Definition: mdata.h:39
void * mdata
Driver specific data.
Definition: mailbox.h:132
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ maildir_msg_save_hcache()

static int maildir_msg_save_hcache ( struct Mailbox m,
struct Email e 
)
static

Save message to the header cache - Implements MxOps::msg_save_hcache() -.

Definition at line 1571 of file maildir.c.

1572{
1573 int rc = 0;
1574#ifdef USE_HCACHE
1575 const char *const c_header_cache = cs_subset_path(NeoMutt->sub, "header_cache");
1576 struct HeaderCache *hc = mutt_hcache_open(c_header_cache, mailbox_path(m), NULL);
1577 char *key = e->path + 3;
1578 int keylen = maildir_hcache_keylen(key);
1579 rc = mutt_hcache_store(hc, key, keylen, e, 0);
1581#endif
1582 return rc;
1583}
const char * cs_subset_path(const struct ConfigSubset *sub, const char *name)
Get a path config item by name.
Definition: helpers.c:194
int mutt_hcache_store(struct HeaderCache *hc, const char *key, size_t keylen, struct Email *e, uint32_t uidvalidity)
Multiplexor for StoreOps::store.
Definition: hcache.c:616
void mutt_hcache_close(struct HeaderCache *hc)
Multiplexor for StoreOps::close.
Definition: hcache.c:489
struct HeaderCache * mutt_hcache_open(const char *path, const char *folder, hcache_namer_t namer)
Multiplexor for StoreOps::open.
Definition: hcache.c:379
static const char * mailbox_path(const struct Mailbox *m)
Get the Mailbox's path string.
Definition: mailbox.h:209
static size_t maildir_hcache_keylen(const char *fn)
Calculate the length of the Maildir path.
Definition: maildir.c:579
char * path
Path of Email (for local Mailboxes)
Definition: email.h:68
Header cache structure.
Definition: lib.h:88
Container for Accounts, Notifications.
Definition: neomutt.h:37
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:39
+ Here is the call graph for this function:

◆ mh_msg_save_hcache()

static int mh_msg_save_hcache ( struct Mailbox m,
struct Email e 
)
static

Save message to the header cache - Implements MxOps::msg_save_hcache() -.

Definition at line 808 of file mh.c.

809{
810 int rc = 0;
811#ifdef USE_HCACHE
812 const char *const c_header_cache = cs_subset_path(NeoMutt->sub, "header_cache");
813 struct HeaderCache *hc = mutt_hcache_open(c_header_cache, mailbox_path(m), NULL);
814 rc = mutt_hcache_store(hc, e->path, strlen(e->path), e, 0);
816#endif
817 return rc;
818}
+ Here is the call graph for this function:

◆ pop_msg_save_hcache()

static int pop_msg_save_hcache ( struct Mailbox m,
struct Email e 
)
static

Save message to the header cache - Implements MxOps::msg_save_hcache() -.

Definition at line 1140 of file pop.c.

1141{
1142 int rc = 0;
1143#ifdef USE_HCACHE
1144 struct PopAccountData *adata = pop_adata_get(m);
1145 struct PopEmailData *edata = e->edata;
1146 struct HeaderCache *hc = pop_hcache_open(adata, mailbox_path(m));
1147 rc = mutt_hcache_store(hc, edata->uid, strlen(edata->uid), e, 0);
1149#endif
1150
1151 return rc;
1152}
struct PopAccountData * pop_adata_get(struct Mailbox *m)
Get the Account data for this mailbox.
Definition: adata.c:73
static struct HeaderCache * pop_hcache_open(struct PopAccountData *adata, const char *path)
Open the header cache.
Definition: pop.c:299
void * edata
Driver-specific data.
Definition: email.h:72
POP-specific Account data -.
Definition: adata.h:37
POP-specific Email data -.
Definition: edata.h:32
const char * uid
UID of email.
Definition: edata.h:33
+ Here is the call graph for this function: