51 buf_printf(&kcdbpath,
"%s#type=kct#opts=l#rcomp=lex", path);
53 if (!kcdbopen(db,
buf_string(&kcdbpath), KCOWRITER | KCOCREATE))
55 int ecode = kcdbecode(db);
71 size_t klen,
size_t *vlen)
78 return kcdbget(db, key, klen, vlen);
97 size_t klen,
void *value,
size_t vlen)
104 if (!kcdbset(db, key, klen, value, vlen))
106 int ecode = kcdbecode(db);
107 return ecode ? ecode : -1;
122 if (!kcdbremove(db, key, klen))
124 int ecode = kcdbecode(db);
125 return ecode ? ecode : -1;
142 int ecode = kcdbecode(db);
154 static char version_cache[128] = { 0 };
155 if (version_cache[0] ==
'\0')
156 snprintf(version_cache,
sizeof(version_cache),
"kyotocabinet %s", KCVERSION);
158 return version_cache;
int buf_printf(struct Buffer *buf, const char *fmt,...)
Format a string overwriting a Buffer.
void buf_dealloc(struct Buffer *buf)
Release the memory allocated by a buffer.
struct Buffer buf_make(size_t size)
Make a new buffer on the stack.
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
#define mutt_debug(LEVEL,...)
static void store_kyotocabinet_close(StoreHandle **ptr)
Close a Store connection - Implements StoreOps::close() -.
static int store_kyotocabinet_delete_record(StoreHandle *store, const char *key, size_t klen)
Delete a record from the Store - Implements StoreOps::delete_record() -.
static void * store_kyotocabinet_fetch(StoreHandle *store, const char *key, size_t klen, size_t *vlen)
Fetch a Value from the Store - Implements StoreOps::fetch() -.
static void store_kyotocabinet_free(StoreHandle *store, void **ptr)
Free a Value returned by fetch() - Implements StoreOps::free() -.
static StoreHandle * store_kyotocabinet_open(const char *path)
Open a connection to a Store - Implements StoreOps::open() -.
static int store_kyotocabinet_store(StoreHandle *store, const char *key, size_t klen, void *value, size_t vlen)
Write a Value to the Store - Implements StoreOps::store() -.
static const char * store_kyotocabinet_version(void)
Get a Store version string - Implements StoreOps::version() -.
@ LL_DEBUG2
Log at debug level 2.
Convenience wrapper for the library headers.
void StoreHandle
Opaque type for store backend.
#define STORE_BACKEND_OPS(_name)
String manipulation buffer.