3
/* call back function for an existing record */
4
const char* visitfull(const char* kbuf, size_t ksiz,
5
const char* vbuf, size_t vsiz, size_t *sp, void* opq) {
6
fwrite(kbuf, 1, ksiz, stdout);
8
fwrite(vbuf, 1, vsiz, stdout);
13
/* call back function for an empty record space */
14
const char* visitempty(const char* kbuf, size_t ksiz, size_t *sp, void* opq) {
15
fwrite(kbuf, 1, ksiz, stdout);
16
printf(" is missing\n");
21
int main(int argc, char** argv) {
28
/* create the database object */
31
/* open the database */
32
if (!kcdbopen(db, "casket.kch", KCOWRITER | KCOCREATE)) {
33
fprintf(stderr, "open error: %s\n", kcecodename(kcdbecode(db)));
37
if (!kcdbset(db, "foo", 3, "hop", 3) ||
38
!kcdbset(db, "bar", 3, "step", 4) ||
39
!kcdbset(db, "baz", 3, "jump", 4)) {
40
fprintf(stderr, "set error: %s\n", kcecodename(kcdbecode(db)));
43
/* retrieve a record */
44
vbuf = kcdbget(db, "foo", 3, &vsiz);
49
fprintf(stderr, "get error: %s\n", kcecodename(kcdbecode(db)));
52
/* traverse records */
55
while ((kbuf = kccurget(cur, &ksiz, &cvbuf, &vsiz, 1)) != NULL) {
56
printf("%s:%s\n", kbuf, cvbuf);
61
/* retrieve a record with visitor */
62
if (!kcdbaccept(db, "foo", 3, visitfull, visitempty, NULL, 0) ||
63
!kcdbaccept(db, "dummy", 5, visitfull, visitempty, NULL, 0)) {
64
fprintf(stderr, "accept error: %s\n", kcecodename(kcdbecode(db)));
67
/* traverse records with visitor */
68
if (!kcdbiterate(db, visitfull, NULL, 0)) {
69
fprintf(stderr, "iterate error: %s\n", kcecodename(kcdbecode(db)));
72
/* close the database */
74
fprintf(stderr, "close error: %s\n", kcecodename(kcdbecode(db)));
77
/* delete the database object */