24 uint32 newpos = c->
pos +
len;
46 if (posplus(c,8) == -1)
return -1;
47 if (posplus(c,keylen) == -1)
return -1;
48 if (posplus(c,datalen) == -1)
return -1;
59 uint32_pack(buf,keylen);
60 uint32_pack(buf + 4,datalen);
61 if (buffer_putalign(&c->
b,buf,8) == -1)
return -1;
68 if (buffer_putalign(&c->
b,key,keylen) == -1)
return -1;
69 if (buffer_putalign(&c->
b,data,datalen) == -1)
return -1;
85 for (i = 0; i < 256; ++
i)
96 for (i = 0; i < 256; ++
i) {
103 u = (uint32) 0 - (uint32) 1;
104 u /=
sizeof(
struct cdb_hp);
108 if (!c->
split)
return -1;
114 for (i = 0; i < 256; ++
i) {
125 for (i = 0; i < 256; ++
i) {
129 uint32_pack(c->
final + 8 * i,c->
pos);
130 uint32_pack(c->
final + 8 * i + 4,len);
132 for (u = 0; u <
len; ++
u)
137 for (u = 0; u < count; ++
u) {
138 where = (hp->
h >> 8) % len;
139 while (c->
hash[where].
p)
142 c->
hash[where] = *hp++;
145 for (u = 0; u <
len; ++
u) {
146 uint32_pack(buf,c->
hash[u].
h);
147 uint32_pack(buf + 4,c->
hash[u].
p);
148 if (buffer_putalign(&c->
b,buf,8) == -1)
return -1;
149 if (posplus(c,8) == -1)
return -1;
char * alloc(unsigned int n)
struct cdb_hp hp[CDB_HPLIST]
int cdb_make_start(struct cdb_make *c, int fd)
void c(char *home, char *subdir, char *file, int uid, int gid, int mode)
int cdb_make_add(struct cdb_make *c, char *key, unsigned int keylen, char *data, unsigned int datalen)
int cdb_make_addbegin(struct cdb_make *c, unsigned int keylen, unsigned int datalen)
int cdb_make_finish(struct cdb_make *c)
int buffer_putflush(buffer *, char *, unsigned int)
int cdb_make_addend(struct cdb_make *c, unsigned int keylen, unsigned int datalen, uint32 h)
void h(char *home, int uid, int gid, int mode)
void buffer_init(buffer *, int(*)(), int, char *, unsigned int)
uint32 cdb_hash(char *, unsigned int)
int buffer_flush(buffer *)