diff options
-rw-r--r-- | hcache.c | 15 | ||||
-rw-r--r-- | hcache.h | 5 | ||||
-rw-r--r-- | imap/imap.c | 2 | ||||
-rw-r--r-- | imap/util.c | 2 | ||||
-rw-r--r-- | mh.c | 6 | ||||
-rw-r--r-- | pop.c | 4 |
6 files changed, 19 insertions, 15 deletions
@@ -464,7 +464,8 @@ crc_matches(const char *d, unsigned int crc) /* Append md5sumed folder to path if path is a directory. */ static const char * -mutt_hcache_per_folder(const char *path, const char *folder) +mutt_hcache_per_folder(const char *path, const char *folder, + hcache_namer_t namer) { static char mutt_hcache_per_folder_path[_POSIX_PATH_MAX]; struct stat path_stat; @@ -749,7 +750,7 @@ static char* get_foldername(const char *folder) { #if HAVE_QDBM header_cache_t * -mutt_hcache_open(const char *path, const char *folder) +mutt_hcache_open(const char *path, const char *folder, hcache_namer_t namer) { struct header_cache *h = safe_calloc(1, sizeof (HEADER_CACHE)); int flags = VL_OWRITER | VL_OCREAT; @@ -765,7 +766,7 @@ mutt_hcache_open(const char *path, const char *folder) return NULL; } - path = mutt_hcache_per_folder(path, h->folder); + path = mutt_hcache_per_folder(path, h->folder, namer); if (option(OPTHCACHECOMPRESS)) flags |= VL_OZCOMP; @@ -814,7 +815,7 @@ mutt_hcache_delete(header_cache_t *h, const char *filename, #elif HAVE_GDBM header_cache_t * -mutt_hcache_open(const char *path, const char *folder) +mutt_hcache_open(const char *path, const char *folder, hcache_namer_t namer) { struct header_cache *h = safe_calloc(1, sizeof (HEADER_CACHE)); int pagesize = atoi(HeaderCachePageSize) ? atoi(HeaderCachePageSize) : 16384; @@ -830,7 +831,7 @@ mutt_hcache_open(const char *path, const char *folder) return NULL; } - path = mutt_hcache_per_folder(path, h->folder); + path = mutt_hcache_per_folder(path, h->folder, namer); h->db = gdbm_open((char *) path, pagesize, GDBM_WRCREAT, 00600, NULL); if (h->db) @@ -898,7 +899,7 @@ mutt_hcache_dbt_empty_init(DBT * dbt) } header_cache_t * -mutt_hcache_open(const char *path, const char *folder) +mutt_hcache_open(const char *path, const char *folder, hcache_namer_t namer) { struct stat sb; u_int32_t createflags = DB_CREATE; @@ -916,7 +917,7 @@ mutt_hcache_open(const char *path, const char *folder) } tmp = get_foldername (folder); - path = mutt_hcache_per_folder(path, tmp); + path = mutt_hcache_per_folder(path, tmp, namer); snprintf(h->lockfile, _POSIX_PATH_MAX, "%s-lock-hack", path); FREE(&tmp); @@ -24,7 +24,10 @@ struct header_cache; typedef struct header_cache header_cache_t; -header_cache_t *mutt_hcache_open(const char *path, const char *folder); +typedef int (*hcache_namer_t)(const char* path, char* dest, size_t dlen); + +header_cache_t *mutt_hcache_open(const char *path, const char *folder, + hcache_namer_t namer); void mutt_hcache_close(header_cache_t *h); HEADER *mutt_hcache_restore(const unsigned char *d, HEADER **oh); void *mutt_hcache_fetch(header_cache_t *h, const char *filename, size_t (*keylen)(const char *fn)); diff --git a/imap/imap.c b/imap/imap.c index 03d7298f..4a93872d 100644 --- a/imap/imap.c +++ b/imap/imap.c @@ -1597,7 +1597,7 @@ IMAP_STATUS* imap_mboxcache_get (IMAP_DATA* idata, const char* mbox, int create) mutt_account_tourl (&idata->conn->account, &url); url.path = (char*)mbox; url_ciss_tostring (&url, urlstr, sizeof (urlstr), 0); - hc = mutt_hcache_open (HeaderCache, urlstr); + hc = mutt_hcache_open (HeaderCache, urlstr, NULL); if (hc) { uidvalidity = mutt_hcache_fetch_raw (hc, "/UIDVALIDITY", imap_hcache_keylen); diff --git a/imap/util.c b/imap/util.c index 2a278704..7fab623c 100644 --- a/imap/util.c +++ b/imap/util.c @@ -85,7 +85,7 @@ int imap_hcache_open (IMAP_DATA* idata) url_ciss_tostring (&url, cachepath, sizeof (cachepath), 0); FREE (&mx.mbox); - idata->hcache = mutt_hcache_open (HeaderCache, cachepath); + idata->hcache = mutt_hcache_open (HeaderCache, cachepath, NULL); return idata->hcache != NULL ? 0 : -1; } @@ -795,7 +795,7 @@ static int maildir_parse_dir (CONTEXT * ctx, struct maildir ***last, #ifdef USE_HCACHE if (ctx && ctx->magic == M_MH) - hc = mutt_hcache_open (HeaderCache, ctx->path); + hc = mutt_hcache_open (HeaderCache, ctx->path, NULL); #endif while ((de = readdir (dirp)) != NULL) @@ -998,7 +998,7 @@ void maildir_delayed_parsing (CONTEXT * ctx, struct maildir *md, struct stat lastchanged; int ret; - hc = mutt_hcache_open (HeaderCache, ctx->path); + hc = mutt_hcache_open (HeaderCache, ctx->path, NULL); #endif for (p = md, count = 0; p; p = p->next, count++) @@ -1586,7 +1586,7 @@ int mh_sync_mailbox (CONTEXT * ctx, int *index_hint) #if USE_HCACHE if (ctx->magic == M_MAILDIR || ctx->magic == M_MH) - hc = mutt_hcache_open(HeaderCache, ctx->path); + hc = mutt_hcache_open(HeaderCache, ctx->path, NULL); #endif /* USE_HCACHE */ snprintf (msgbuf, sizeof (msgbuf), _("Writing %s..."), ctx->path); @@ -203,7 +203,7 @@ static int pop_fetch_headers (CONTEXT *ctx) header_cache_t *hc = NULL; void *data; - hc = mutt_hcache_open (HeaderCache, ctx->path); + hc = mutt_hcache_open (HeaderCache, ctx->path, NULL); #endif time (&pop_data->check_time); @@ -613,7 +613,7 @@ int pop_sync_mailbox (CONTEXT *ctx, int *index_hint) M_PROGRESS_MSG, WriteInc, ctx->deleted); #if USE_HCACHE - hc = mutt_hcache_open (HeaderCache, ctx->path); + hc = mutt_hcache_open (HeaderCache, ctx->path, NULL); #endif for (i = 0, j = 0, ret = 0; ret == 0 && i < ctx->msgcount; i++) |