Tokyo Cabinet

https://gist.github.com/cooldaemon/148113

Makefile

CC = gcc
SOURCES = $(wildcard *.c)
OBJECTS = $(SOURCES:%.c=%.o)
 
TARGET = test
 
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -o $@ \
-ltokyocabinet -lz -lbz2 -lpthread -lm -lc
 
.c.o:
$(CC) -c $<
 
clean:
rm -f $(TARGET) $(OBJECTS)


#include <stdio.h>
#include <tcutil.h>
#include <tchdb.h>
 
void cleanup(TCHDB *);
void print_value(TCHDB *, const char *);
void print_error(TCHDB *);
 
int main(int argc, char *argv[]) {
TCHDB *hdb = tchdbnew();
 
if (!tchdbopen(hdb, "test.tch", HDBOWRITER | HDBOCREAT)) {
print_error(hdb);
tchdbdel(hdb);
return -1;
}
 
if(
!tchdbput2(hdb, "foo", "hop") ||
!tchdbput2(hdb, "bar", "step") ||
!tchdbput2(hdb, "baz", "jump")
){
print_error(hdb);
cleanup(hdb);
return -1;
}
 
print_value(hdb, "foo");
 
tchdbiterinit(hdb);
char *key;
while ((key = tchdbiternext2(hdb)) != NULL) {
print_value(hdb, key);
tcfree(key);
}
 
cleanup(hdb);
return 0;
}
 
void cleanup(TCHDB *hdb) {
if (!tchdbclose(hdb)) {
print_error(hdb);
}
 
tchdbdel(hdb);
}
 
void print_value(TCHDB *hdb, const char *key) {
char *value = tchdbget2(hdb, key);
if (value) {
printf("get value: %s\n", value);
tcfree(value);
} else {
print_error(hdb);
}
}
 
void print_error(TCHDB *hdb) {
int ecode = tchdbecode(hdb);
fprintf(stderr, "open error: %s\n", tchdberrmsg(ecode));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值