]> granicus.if.org Git - mutt/commitdiff
Use header_cache_t* instead of void* for header cache.
authorRocco Rutte <pdmef@gmx.net>
Thu, 18 May 2006 18:35:10 +0000 (18:35 +0000)
committerRocco Rutte <pdmef@gmx.net>
Thu, 18 May 2006 18:35:10 +0000 (18:35 +0000)
In hcache.c, the header_cache structure is defined to match the needs
per DB backend used. Thus the interface uses void* abstract from it.

This patch adds a 'header_cache' forward declaration to hcache.h so that
we at least get a little more type safety.

hcache.c
hcache.h
imap/imap.c
imap/message.c
mh.c

index b67c48e981e574d77295a685511cda1ef2027a19..217d5788f422c099055fa3246cbe569928af2d7a 100644 (file)
--- a/hcache.c
+++ b/hcache.c
@@ -566,10 +566,9 @@ mutt_hcache_per_folder(const char *path, const char *folder)
 /* This function transforms a header into a char so that it is useable by
  * db_store */
 static void *
-mutt_hcache_dump(void *_db, HEADER * h, int *off,
+mutt_hcache_dump(header_cache_t *h, HEADER * header, int *off,
                 unsigned long uid_validity)
 {
-  struct header_cache *db = _db;
   unsigned char *d = NULL;
   *off = 0;
 
@@ -585,15 +584,15 @@ mutt_hcache_dump(void *_db, HEADER * h, int *off,
   }
   *off += sizeof (validate);
 
-  d = dump_int(db->crc, d, off);
+  d = dump_int(h->crc, d, off);
 
   lazy_realloc(&d, *off + sizeof (HEADER));
-  memcpy(d + *off, h, sizeof (HEADER));
+  memcpy(d + *off, header, sizeof (HEADER));
   *off += sizeof (HEADER);
 
-  d = dump_envelope(h->env, d, off);
-  d = dump_body(h->content, d, off);
-  d = dump_char(h->maildir_flags, d, off);
+  d = dump_envelope(header->env, d, off);
+  d = dump_body(header->content, d, off);
+  d = dump_char(header->maildir_flags, d, off);
 
   return d;
 }
@@ -633,13 +632,12 @@ mutt_hcache_restore(const unsigned char *d, HEADER ** oh)
 }
 
 void *
-mutt_hcache_fetch(void *db, const char *filename,
+mutt_hcache_fetch(header_cache_t *h, const char *filename,
                  size_t(*keylen) (const char *fn))
 {
-  struct header_cache *h = db;
   void* data;
 
-  data = mutt_hcache_fetch_raw (db, filename, keylen);
+  data = mutt_hcache_fetch_raw (h, filename, keylen);
 
   if (!data || !crc32_matches(data, h->crc))
   {
@@ -651,10 +649,9 @@ mutt_hcache_fetch(void *db, const char *filename,
 }
 
 void *
-mutt_hcache_fetch_raw (void *db, const char *filename,
+mutt_hcache_fetch_raw (header_cache_t *h, const char *filename,
                        size_t(*keylen) (const char *fn))
 {
-  struct header_cache *h = db;
 #ifndef HAVE_DB4
   char path[_POSIX_PATH_MAX];
   int ksize;
@@ -703,11 +700,10 @@ mutt_hcache_fetch_raw (void *db, const char *filename,
 }
 
 int
-mutt_hcache_store(void *db, const char *filename, HEADER * header,
+mutt_hcache_store(header_cache_t *h, const char *filename, HEADER * header,
                  unsigned long uid_validity,
                  size_t(*keylen) (const char *fn))
 {
-  struct header_cache *h = db;
   char* data;
   int dlen;
   int ret;
@@ -715,8 +711,8 @@ mutt_hcache_store(void *db, const char *filename, HEADER * header,
   if (!h)
     return -1;
   
-  data = mutt_hcache_dump(db, header, &dlen, uid_validity);
-  ret = mutt_hcache_store_raw (db, filename, data, dlen, keylen);
+  data = mutt_hcache_dump(h, header, &dlen, uid_validity);
+  ret = mutt_hcache_store_raw (h, filename, data, dlen, keylen);
   
   FREE(&data);
   
@@ -724,10 +720,9 @@ mutt_hcache_store(void *db, const char *filename, HEADER * header,
 }
 
 int
-mutt_hcache_store_raw (void* db, const char* filename, void* data,
+mutt_hcache_store_raw (header_cache_t* h, const char* filename, void* data,
                        size_t dlen, size_t(*keylen) (const char* fn))
 {
-  struct header_cache *h = db;
 #ifndef HAVE_DB4
   char path[_POSIX_PATH_MAX];
   int ksize;
@@ -775,7 +770,7 @@ mutt_hcache_store_raw (void* db, const char* filename, void* data,
 }
 
 #if HAVE_QDBM
-void *
+header_cache_t *
 mutt_hcache_open(const char *path, const char *folder)
 {
   struct header_cache *h = safe_calloc(1, sizeof (HEADER_CACHE));
@@ -809,10 +804,8 @@ mutt_hcache_open(const char *path, const char *folder)
 }
 
 void
-mutt_hcache_close(void *db)
+mutt_hcache_close(header_cache_t *h)
 {
-  struct header_cache *h = db;
-
   if (!h)
     return;
 
@@ -822,10 +815,9 @@ mutt_hcache_close(void *db)
 }
 
 int
-mutt_hcache_delete(void *db, const char *filename,
+mutt_hcache_delete(header_cache_t *h, const char *filename,
                   size_t(*keylen) (const char *fn))
 {
-  struct header_cache *h = db;
   char path[_POSIX_PATH_MAX];
   int ksize;
 
@@ -842,7 +834,7 @@ mutt_hcache_delete(void *db, const char *filename,
 
 #elif HAVE_GDBM
 
-void *
+header_cache_t *
 mutt_hcache_open(const char *path, const char *folder)
 {
   struct header_cache *h = safe_calloc(1, sizeof (HEADER_CACHE));
@@ -878,10 +870,8 @@ mutt_hcache_open(const char *path, const char *folder)
 }
 
 void
-mutt_hcache_close(void *db)
+mutt_hcache_close(header_cache_t *h)
 {
-  struct header_cache *h = db;
-
   if (!h)
     return;
 
@@ -891,11 +881,10 @@ mutt_hcache_close(void *db)
 }
 
 int
-mutt_hcache_delete(void *db, const char *filename,
+mutt_hcache_delete(header_cache_t *h, const char *filename,
                   size_t(*keylen) (const char *fn))
 {
   datum key;
-  struct header_cache *h = db;
   char path[_POSIX_PATH_MAX];
 
   if (!h)
@@ -928,7 +917,7 @@ mutt_hcache_dbt_empty_init(DBT * dbt)
   dbt->flags = 0;
 }
 
-void *
+header_cache_t *
 mutt_hcache_open(const char *path, const char *folder)
 {
   struct stat sb;
@@ -1008,10 +997,8 @@ mutt_hcache_open(const char *path, const char *folder)
 }
 
 void
-mutt_hcache_close(void *db)
+mutt_hcache_close(header_cache_t *h)
 {
-  struct header_cache *h = db;
-
   if (!h)
     return;
 
@@ -1023,11 +1010,10 @@ mutt_hcache_close(void *db)
 }
 
 int
-mutt_hcache_delete(void *db, const char *filename,
+mutt_hcache_delete(header_cache_t *h, const char *filename,
                   size_t(*keylen) (const char *fn))
 {
   DBT key;
-  struct header_cache *h = db;
 
   if (!h)
     return -1;
index 7f4e16eb548c21c1f576d9294f524e4f0f763c8b..e2c93cfc82d1f6d182c60f0a3552ada3e5277a7f 100644 (file)
--- a/hcache.h
+++ b/hcache.h
 #ifndef _HCACHE_H_
 #define _HCACHE_H_ 1
 
-void *mutt_hcache_open(const char *path, const char *folder);
-void mutt_hcache_close(void *db);
+struct header_cache;
+typedef struct header_cache header_cache_t;
+
+header_cache_t *mutt_hcache_open(const char *path, const char *folder);
+void mutt_hcache_close(header_cache_t *h);
 HEADER *mutt_hcache_restore(const unsigned char *d, HEADER **oh);
-void *mutt_hcache_fetch(void *db, const char *filename, size_t (*keylen)(const char *fn));
-void *mutt_hcache_fetch_raw (void *db, const char *filename,
+void *mutt_hcache_fetch(header_cache_t *h, const char *filename, size_t (*keylen)(const char *fn));
+void *mutt_hcache_fetch_raw (header_cache_t *h, const char *filename,
                              size_t (*keylen)(const char *fn));
-int mutt_hcache_store(void *db, const char *filename, HEADER *h,
+int mutt_hcache_store(header_cache_t *h, const char *filename, HEADER *header,
                       unsigned long uid_validity, size_t (*keylen)(const char *fn));
-int mutt_hcache_store_raw (void* db, const char* filename, void* data,
+int mutt_hcache_store_raw (header_cache_t *h, const char* filename, void* data,
                            size_t dlen, size_t(*keylen) (const char* fn));
-int mutt_hcache_delete(void *db, const char *filename, size_t (*keylen)(const char *fn));
+int mutt_hcache_delete(header_cache_t *h, const char *filename, size_t (*keylen)(const char *fn));
 
 #endif /* _HCACHE_H_ */
index f707f3d416b4f7497c743950e81d58ed9c89e025..99b0c4704c4644ea5b9bec2c587e0f3dfd145fc4 100644 (file)
@@ -242,7 +242,7 @@ void imap_expunge_mailbox (IMAP_DATA* idata)
   int i, cacheno;
 
 #if USE_HCACHE
-  void* hc;
+  header_cache_t *hc;
   char uidbuf[32];
   
   hc = mutt_hcache_open (HeaderCache, idata->ctx->path);
index 54ec258662a455dda3d120a3e4202e150d8e93e3..d89937617bb4110dcf0a9260445a560db7e3cdda 100644 (file)
@@ -71,7 +71,7 @@ int imap_read_headers (IMAP_DATA* idata, int msgbegin, int msgend)
   const char *want_headers = "DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL";
 
 #if USE_HCACHE
-  void *hc = NULL;
+  header_cache_t *hc = NULL;
   unsigned int *uid_validity = NULL;
   unsigned int *uidnext = NULL;
   int evalhc = 0;
diff --git a/mh.c b/mh.c
index 3a4e44cd07479f58c65dd8d282b0867198f6ea70..c05bdcd3e52c18fe499180bf15e45c7513edb87e 100644 (file)
--- a/mh.c
+++ b/mh.c
@@ -641,8 +641,11 @@ static HEADER *maildir_parse_message (int magic, const char *fname,
 
 static int maildir_parse_entry (CONTEXT * ctx, struct maildir ***last,
                                const char *subdir, const char *fname,
-                               int *count, int is_old, ino_t inode,
-                               void *hc)
+                               int *count, int is_old, ino_t inode
+#if USE_HCACHE
+                               , header_cache_t *hc
+#endif
+                              )
 {
   struct maildir *entry;
   HEADER *h = NULL;
@@ -728,7 +731,9 @@ static int maildir_parse_dir (CONTEXT * ctx, struct maildir ***last,
   struct dirent *de;
   char buf[_POSIX_PATH_MAX];
   int is_old = 0;
-  void *hc = NULL;
+#ifdef USE_HCACHE
+  header_cache_t *hc = NULL;
+#endif
 
   if (subdir)
   {
@@ -764,7 +769,10 @@ static int maildir_parse_dir (CONTEXT * ctx, struct maildir ***last,
 #else
                         0
 #endif
-                       , hc);
+#if USE_HCACHE
+                        , hc
+#endif
+                        );
   }
 
   closedir (dirp);
@@ -935,7 +943,7 @@ void maildir_delayed_parsing (CONTEXT * ctx, struct maildir *md)
   int count;
 
 #if USE_HCACHE
-  void *hc = NULL;
+  header_cache_t *hc = NULL;
   void *data;
   struct timeval *when = NULL;
   struct stat lastchanged;
@@ -1488,7 +1496,7 @@ int mh_sync_mailbox (CONTEXT * ctx, int *index_hint)
   char path[_POSIX_PATH_MAX], tmp[_POSIX_PATH_MAX];
   int i, j;
 #if USE_HCACHE
-  void *hc = NULL;
+  header_cache_t *hc = NULL;
 #endif /* USE_HCACHE */
 
   if (ctx->magic == M_MH)