#if defined(HAVE_TOKYOCABINET)
#include <tcutil.h>
#include <tchdb.h>
-#elif defined(HAVE_QDBM)
-#include <depot.h>
-#include <cabin.h>
-#include <villa.h>
#elif defined(HAVE_GDBM)
#include <gdbm.h>
#else
struct hcache_t {
#if defined(HAVE_TOKYOCABINET)
TCHDB *db;
-#elif defined(HAVE_QDBM)
- VILLA *db;
#elif defined(HAVE_GDBM)
GDBM_FILE db;
#endif
return d;
}
-static void dump_parameter(buffer_t *buf, parameter_t *p)
+static void dump_parameter(buffer_t *buf, parameters_t *p)
{
+#if 0
int pos = buf->len, counter = 0;
dump_int(buf, counter);
}
memcpy(buf->data + pos, &counter, sizeof(counter));
+#endif
}
-static const void *restore_parameter(const char *d, parameter_t ** p)
+static const void *restore_parameter(const char *d, parameters_t *p)
{
int counter;
d = restore_int(d, &counter);
for (; counter > 0; counter--) {
- *p = parameter_new();
- d = restore_cstr(d, &(*p)->attribute);
- d = restore_cstr(d, &(*p)->value);
- p = &(*p)->next;
+ char *k, *v;
+ d = restore_cstr(d, &k);
+ d = restore_cstr(d, &v);
+ parameter_setval(p, k, v);
+ p_delete(&k);
+ p_delete(&v);
}
- *p = NULL;
return d;
}
d = restore_cstr(d, &c->xtype);
d = restore_cstr(d, &c->subtype);
- d = restore_parameter(d, &c->parameter);
+ d = restore_parameter(d, c->parameter);
d = restore_cstr(d, &c->description);
d = restore_cstr(d, &c->form_name);
d = restore_envelope(d, h->env);
h->content = body_new();
+ h->content->parameter = parameter_new();
d = restore_body(d, h->content);
d = restore_cstr(d, &h->maildir_flags);
tchdbdel(h->db);
h->db = NULL;
}
-#elif defined(HAVE_QDBM)
- h->db = vlopen(path, VL_OWRITER | VL_OCREAT, VL_CMPLEX);
#elif defined(HAVE_GDBM)
h->db = gdbm_open((char *) path, 16384, GDBM_WRCREAT, 00600, NULL);
#endif
#if defined(HAVE_TOKYOCABINET)
tchdbdel((*db)->db);
(*db)->db = NULL;
-#elif defined(HAVE_QDBM)
- vlclose((*db)->db);
#elif defined(HAVE_GDBM)
gdbm_close((*db)->db);
#endif
#if defined(HAVE_TOKYOCABINET)
int unused;
data = tchdbget(db->db, path, ksize, &unused);
-#elif defined(HAVE_QDBM)
- data = vlget(db->db, path, ksize, NULL);
#elif defined(HAVE_GDBM)
datum k = { .dptr = path, .dsize = ksize };
int ksize = keylen(path);
#if defined(HAVE_TOKYOCABINET)
ret = !!tchdbput(db->db, path, ksize, data->data, data->len) - 1;
-#elif defined(HAVE_QDBM)
- ret = !!vlput(db->db, path, ksize, data->data, data->len, VL_DOVER) - 1;
#elif defined(HAVE_GDBM)
datum k = { .dptr = path, .dsize = ksize };
datum v = { .dptr = data->data, .dsize = data->len };
char path[_POSIX_PATH_MAX];
if (!db)
- return -1;
+ return;
snprintf(path, sizeof(path), "%s%s", db->folder, filename);
int ksize = keylen(path);
#if defined(HAVE_TOKYOCABINET)
tchdbout(db->db, path, ksize);
-#elif defined(HAVE_QDBM)
- vlout(db->db, path, ksize);
#elif defined(HAVE_GDBM)
datum k = { .dptr = path, .dsize = ksize };
gdbm_delete(db->db, k);