- if (!crc32_matches (data.dptr, h->crc)) {
- p_delete(&data.dptr);
- return NULL;
- }
-
- return data.dptr;
-}
-
-int
-mutt_hcache_store (void *db, const char *filename, HEADER * header,
- unsigned long uid_validity, ssize_t (*keylen) (const char *fn))
-{
- struct header_cache *h = db;
- datum key;
- datum data;
- char path[_POSIX_PATH_MAX];
- int ret;
-
- if (!h) {
- return -1;
- }
-
- m_strcpy(path, sizeof(path), h->folder);
- strncat (path, filename, sizeof (path) - m_strlen(path));
-
- key.dptr = path;
- key.dsize = keylen (path);
-
- data.dptr = mutt_hcache_dump (db, header, &data.dsize, uid_validity);
-
- ret = gdbm_store (h->db, key, data, GDBM_REPLACE);
-
- p_delete(&data.dptr);
-
- return ret;
-}
-
-int
-mutt_hcache_delete (void *db, const char *filename,
- ssize_t (*keylen) (const char *fn))
-{
- datum key;
- struct header_cache *h = db;
- char path[_POSIX_PATH_MAX];
-
- if (!h) {
- return -1;
- }
-
- m_strcpy(path, sizeof(path), h->folder);
- strncat (path, filename, sizeof (path) - m_strlen(path));
-
- key.dptr = path;
- key.dsize = keylen (path);
-
- return gdbm_delete (h->db, key);
-}
-#elif defined(HAVE_DB4)
-
-static void mutt_hcache_dbt_init (DBT * dbt, void *data, ssize_t len)
-{
- dbt->data = data;
- dbt->size = dbt->ulen = len;
- dbt->dlen = dbt->doff = 0;
- dbt->flags = DB_DBT_USERMEM;
-}