typedef union
{
struct timeval timeval;
- unsigned long uid_validity;
+ unsigned int uidvalidity;
} validate;
static void *
* db_store */
static void *
mutt_hcache_dump(header_cache_t *h, HEADER * header, int *off,
- unsigned long uid_validity)
+ unsigned int uidvalidity)
{
unsigned char *d = NULL;
HEADER nh;
*off = 0;
d = lazy_malloc(sizeof (validate));
- if (uid_validity)
- memcpy(d, &uid_validity, sizeof (unsigned long));
+ if (uidvalidity)
+ memcpy(d, &uidvalidity, sizeof (uidvalidity));
else
{
struct timeval now;
int
mutt_hcache_store(header_cache_t *h, const char *filename, HEADER * header,
- unsigned long uid_validity,
+ unsigned int uidvalidity,
size_t(*keylen) (const char *fn))
{
char* data;
if (!h)
return -1;
- data = mutt_hcache_dump(h, header, &dlen, uid_validity);
+ data = mutt_hcache_dump(h, header, &dlen, uidvalidity);
ret = mutt_hcache_store_raw (h, filename, data, dlen, keylen);
FREE(&data);
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));
+/* uidvalidity is an IMAP-specific unsigned 32 bit number */
int mutt_hcache_store(header_cache_t *h, const char *filename, HEADER *header,
- unsigned long uid_validity, size_t (*keylen)(const char *fn));
+ unsigned int uidvalidity, size_t (*keylen)(const char *fn));
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(header_cache_t *h, const char *filename, size_t (*keylen)(const char *fn));
{
if (*uv == idata->uid_validity)
h = mutt_hcache_restore ((unsigned char*)uv, NULL);
+ else
+ dprint (3, (debugfile, "hcache uidvalidity mismatch: %u", *uv));
FREE (&uv);
}