X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=hcache.c;h=7e3b0befaf4eaf5f28e9b3761bea566efe4cbeb4;hp=7e7334d928e883ed47b3567a2a67fdf46b1e5424;hb=2b6a8b2b48fc8427a9d0df8222b61ccdeb9e9ae2;hpb=0f73e7417ede147d1a67a8fbed1ba6d2ba9b5297 diff --git a/hcache.c b/hcache.c index 7e7334d..7e3b0be 100644 --- a/hcache.c +++ b/hcache.c @@ -23,11 +23,7 @@ #ifdef USE_HCACHE -#if HAVE_QDBM -#include -#include -#include -#elif HAVE_GDBM +#if HAVE_GDBM #include #elif HAVE_DB4 #include @@ -48,16 +44,8 @@ #include "md5.h" #include "lib/mem.h" -#include "lib/debug.h" -#if HAVE_QDBM -static struct - header_cache { - VILLA *db; - char *folder; - unsigned int crc; -} HEADER_CACHE; -#elif HAVE_GDBM +#if HAVE_GDBM static struct header_cache { GDBM_FILE db; @@ -612,131 +600,7 @@ HEADER *mutt_hcache_restore (const unsigned char *d, HEADER ** oh) return h; } -#if HAVE_QDBM -void * -mutt_hcache_open(const char *path, const char *folder) -{ - struct header_cache *h = safe_calloc(1, sizeof (HEADER_CACHE)); - int flags = VL_OWRITER | VL_OCREAT; - h->db = NULL; - h->folder = safe_strdup(folder); - h->crc = generate_crc32(); - - if (!path || path[0] == '\0') - { - FREE(&h->folder); - FREE(&h); - return NULL; - } - - path = mutt_hcache_per_folder(path, folder); - - if (option(OPTHCACHECOMPRESS)) - flags |= VL_OZCOMP; - - h->db = vlopen(path, flags, VL_CMPLEX); - if (h->db) - return h; - else - { - FREE(&h->folder); - FREE(&h); - - return NULL; - } -} - -void -mutt_hcache_close(void *db) -{ - struct header_cache *h = db; - - if (!h) - return; - - vlclose(h->db); - FREE(&h->folder); - FREE(&h); -} - -void * -mutt_hcache_fetch(void *db, const char *filename, - size_t(*keylen) (const char *fn)) -{ - struct header_cache *h = db; - char path[_POSIX_PATH_MAX]; - int ksize; - char *data = NULL; - - if (!h) - return NULL; - - strncpy(path, h->folder, sizeof (path)); - safe_strcat(path, sizeof (path), filename); - - ksize = strlen(h->folder) + keylen(path + strlen(h->folder)); - - data = vlget(h->db, path, ksize, NULL); - - if (! crc32_matches(data, h->crc)) - { - if (data) { - FREE(&data); - } - return NULL; - } - - return data; -} - -int -mutt_hcache_store(void *db, const char *filename, HEADER * header, - unsigned long uid_validity, - size_t(*keylen) (const char *fn)) -{ - struct header_cache *h = db; - char path[_POSIX_PATH_MAX]; - int ret; - int ksize, dsize; - char *data = NULL; - - if (!h) - return -1; - - strncpy(path, h->folder, sizeof (path)); - safe_strcat(path, sizeof (path), filename); - - ksize = strlen(h->folder) + keylen(path + strlen(h->folder)); - - data = mutt_hcache_dump(db, header, &dsize, uid_validity); - - ret = vlput(h->db, path, ksize, data, dsize, VL_DOVER); - - FREE(&data); - - return ret; -} - -int -mutt_hcache_delete(void *db, const char *filename, - size_t(*keylen) (const char *fn)) -{ - struct header_cache *h = db; - char path[_POSIX_PATH_MAX]; - int ksize; - - if (!h) - return -1; - - strncpy(path, h->folder, sizeof (path)); - safe_strcat(path, sizeof (path), filename); - - ksize = strlen(h->folder) + keylen(path + strlen(h->folder)); - - return vlout(h->db, path, ksize); -} - -#elif HAVE_GDBM +#if HAVE_GDBM void *mutt_hcache_open (const char *path, const char *folder) { @@ -807,7 +671,7 @@ void *mutt_hcache_fetch (void *db, const char *filename, data = gdbm_fetch (h->db, key); if (!crc32_matches (data.dptr, h->crc)) { - free (data.dptr); + FREE(data.dptr); return NULL; } @@ -987,7 +851,7 @@ void *mutt_hcache_fetch (void *db, const char *filename, h->db->get (h->db, NULL, &key, &data, 0); if (!crc32_matches (data.data, h->crc)) { - free (data.data); + FREE(data.data); return NULL; }