mirror of
https://github.com/stefanocasazza/ULib.git
synced 2025-09-28 19:05:55 +08:00
44 lines
923 B
C
44 lines
923 B
C
#include <unistd.h>
|
|
#include <sys/fcntl.h>
|
|
#include <stdlib.h>
|
|
#include <assert.h>
|
|
#include "cdb.h"
|
|
#include "fmt.h"
|
|
|
|
main(int argc,char *argv[]) {
|
|
int fd;
|
|
struct cdb c;
|
|
char strnum[FMT_ULONG];
|
|
uint32 kpos;
|
|
fd=open(argc>1?argv[1]:"foo.cdb",O_RDONLY);
|
|
assert(fd>=0);
|
|
cdb_init(&c,fd);
|
|
if (cdb_firstkey(&c,&kpos)==1) {
|
|
do {
|
|
uint32 kp,klen,dp,dlen;
|
|
char *key,*data;
|
|
kp=cdb_keypos(&c);
|
|
klen=cdb_keylen(&c);
|
|
dp=cdb_datapos(&c);
|
|
dlen=cdb_datalen(&c);
|
|
{
|
|
key=alloca(klen);
|
|
data=alloca(dlen);
|
|
/* printf("%lu %lu; %lu %lu\n",kp,klen,dp,dlen); */
|
|
assert(cdb_read(&c,key,klen,kp)==0);
|
|
assert(cdb_read(&c,data,dlen,dp)==0);
|
|
write(1,"+",1);
|
|
write(1,strnum,fmt_ulong(strnum,klen));
|
|
write(1,",",1);
|
|
write(1,strnum,fmt_ulong(strnum,dlen));
|
|
write(1,":",1);
|
|
write(1,key,klen);
|
|
write(1,"->",2);
|
|
write(1,data,dlen);
|
|
write(1,"\n",1);
|
|
}
|
|
} while (cdb_nextkey(&c,&kpos)==1);
|
|
write(1,"\n",1);
|
|
}
|
|
}
|