NeoMutt  2025-12-11-435-g4ac674
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
Body Cache Callback API

Prototype for a mutt_bcache_list() callback function. More...

Functions

static int imap_bcache_delete (const char *id, struct BodyCache *bcache, void *data)
 Delete an entry from the message cache - Implements bcache_list_t -.
 
static int nntp_bcache_delete (const char *id, struct BodyCache *bcache, void *data)
 Delete an entry from the message cache - Implements bcache_list_t -.
 
static int pop_bcache_delete (const char *id, struct BodyCache *bcache, void *data)
 Delete an entry from the message cache - Implements bcache_list_t -.
 

Detailed Description

Prototype for a mutt_bcache_list() callback function.

Parameters
idCache id
bcacheBody Cache from mutt_bcache_open()
dataData to pass to the callback function
Return values
-1Failure
>=0count of matching items

mutt_bcache_list() will call this function once for each item in the cache.

Function Documentation

◆ imap_bcache_delete()

static int imap_bcache_delete ( const char * id,
struct BodyCache * bcache,
void * data )
static

Delete an entry from the message cache - Implements bcache_list_t -.

Return values
0Always

Definition at line 169 of file message.c.

170{
171 uint32_t uv = 0;
172 unsigned int uid = 0;
173 struct ImapMboxData *mdata = data;
174 if (!mdata)
175 return 0;
176
177 if (sscanf(id, "%u-%u", &uv, &uid) != 2)
178 return 0;
179
180 /* bad UID */
181 if ((uv != mdata->uidvalidity) || !mutt_hash_int_find(mdata->uid_hash, uid))
183
184 return 0;
185}
int mutt_bcache_del(struct BodyCache *bcache, const char *id)
Delete a file from the Body Cache.
Definition bcache.c:269
void * mutt_hash_int_find(const struct HashTable *table, unsigned int intkey)
Find the HashElem data in a Hash Table element using a key.
Definition hash.c:394
IMAP-specific Mailbox data -.
Definition mdata.h:40
struct BodyCache * bcache
Email body cache.
Definition mdata.h:62
void * mdata
Driver specific data.
Definition mailbox.h:131
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ nntp_bcache_delete()

static int nntp_bcache_delete ( const char * id,
struct BodyCache * bcache,
void * data )
static

Delete an entry from the message cache - Implements bcache_list_t -.

Return values
0Always

Definition at line 778 of file newsrc.c.

779{
780 struct NntpMboxData *mdata = data;
781 anum_t anum = 0;
782 char c = '\0';
783
784 if (!mdata || (sscanf(id, ANUM_FMT "%c", &anum, &c) != 1) ||
785 (anum < mdata->first_message) || (anum > mdata->last_message))
786 {
787 if (mdata)
788 mutt_debug(LL_DEBUG2, "mutt_bcache_del %s\n", id);
790 }
791 return 0;
792}
#define mutt_debug(LEVEL,...)
Definition logging2.h:91
@ LL_DEBUG2
Log at debug level 2.
Definition logging2.h:46
#define ANUM_FMT
Definition lib.h:64
#define anum_t
Definition lib.h:63
NNTP-specific Mailbox data -.
Definition mdata.h:34
struct BodyCache * bcache
Body cache.
Definition mdata.h:50
anum_t first_message
First article number.
Definition mdata.h:37
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pop_bcache_delete()

static int pop_bcache_delete ( const char * id,
struct BodyCache * bcache,
void * data )
static

Delete an entry from the message cache - Implements bcache_list_t -.

Definition at line 260 of file pop.c.

261{
262 struct Mailbox *m = data;
263 if (!m)
264 return -1;
265
267 if (!adata)
268 return -1;
269
270#ifdef USE_HCACHE
271 /* keep hcache file if hcache == bcache */
272 if (mutt_str_equal(HC_FNAME "." HC_FEXT, id))
273 return 0;
274#endif
275
276 for (int i = 0; i < m->msg_count; i++)
277 {
278 struct PopEmailData *edata = pop_edata_get(m->emails[i]);
279 /* if the id we get is known for a header: done (i.e. keep in cache) */
280 if (edata->uid && mutt_str_equal(edata->uid, id))
281 return 0;
282 }
283
284 /* message not found in context -> remove it from cache
285 * return the result of bcache, so we stop upon its first error */
286 return mutt_bcache_del(bcache, cache_id(id));
287}
bool mutt_str_equal(const char *a, const char *b)
Compare two strings.
Definition string.c:662
struct PopAccountData * pop_adata_get(struct Mailbox *m)
Get the Account data for this mailbox.
Definition adata.c:73
struct PopEmailData * pop_edata_get(struct Email *e)
Get the private data for this Email.
Definition edata.c:68
#define HC_FNAME
Definition pop.c:68
static const char * cache_id(const char *id)
Make a message-cache-compatible id.
Definition pop.c:80
#define HC_FEXT
Definition pop.c:69
void * adata
Private data (for Mailbox backends)
Definition account.h:42
void * edata
Driver-specific data.
Definition email.h:74
A mailbox.
Definition mailbox.h:78
int msg_count
Total number of messages.
Definition mailbox.h:87
struct Email ** emails
Array of Emails.
Definition mailbox.h:95
POP-specific Account data -.
Definition adata.h:37
POP-specific Email data -.
Definition edata.h:32
+ Here is the call graph for this function:
+ Here is the caller graph for this function: