bglibs
cdb.h
1 #ifndef CDB_H
2 #define CDB_H
3 
4 #include "iobuf.h"
5 #include "sysdeps.h"
6 
7 struct str;
8 
9 #define CDB_HASHSTART 5381
10 extern uint32 cdb_hashadd(uint32,unsigned char);
11 extern uint32 cdb_hash(const char *,unsigned int);
12 
13 struct cdb {
14  char *map; /* 0 if no map is available */
15  int fd;
16  uint32 size; /* initialized if map is nonzero */
17  uint32 loop; /* number of hash slots searched under this key */
18  uint32 khash; /* initialized if loop is nonzero */
19  uint32 kpos; /* initialized if loop is nonzero */
20  uint32 hpos; /* initialized if loop is nonzero */
21  uint32 hslots; /* initialized if loop is nonzero */
22  uint32 dpos; /* initialized if cdb_findnext() returns 1 */
23  uint32 dlen; /* initialized if cdb_findnext() returns 1 */
24 
25  uint32 nextrec; /* initialized if cdb_{first,next}rec() returns 1 */
26  /* (uint32)-1 means no next record */
27 };
28 
29 extern void cdb_free(struct cdb *);
30 extern void cdb_init(struct cdb *,int fd);
31 
32 extern int cdb_read(struct cdb *,unsigned char *,unsigned int,uint32);
33 
34 extern void cdb_findstart(struct cdb *);
35 extern int cdb_findnext(struct cdb *,const char *,unsigned int);
36 extern int cdb_find(struct cdb *,const char *,unsigned int);
37 
38 #define cdb_datapos(c) ((c)->dpos)
39 #define cdb_datalen(c) ((c)->dlen)
40 
41 extern int cdb_get(struct cdb*, const struct str* key, struct str* data);
42 extern int cdb_getnext(struct cdb*, const struct str* key, struct str* data);
43 
44 struct cdb_hp;
45 struct cdb_hplist;
46 
47 struct cdb_make {
48  unsigned char final[2048];
49  uint32 count[256];
50  uint32 start[256];
51  struct cdb_hplist *head;
52  struct cdb_hp *split; /* includes space for hash */
53  struct cdb_hp *hash;
54  uint32 numentries;
55  obuf b;
56  uint32 pos;
57  int fd;
58 } ;
59 
60 extern int cdb_make_start(struct cdb_make *,int);
61 extern int cdb_make_addbegin(struct cdb_make *,unsigned int,unsigned int);
62 extern int cdb_make_addend(struct cdb_make *,unsigned int,unsigned int,uint32);
63 extern int cdb_make_add(struct cdb_make *,const char *,unsigned int,const char *,unsigned int);
64 extern int cdb_make_finish(struct cdb_make *);
65 
66 #endif
str::s
char * s
Definition: str.h:36
str_catxwll
int str_catxwll(str *s, unsigned long long in, unsigned width, char pad)
Definition: catxwll.c:29
ibuf_copytofd
int ibuf_copytofd(ibuf *in, int out)
Definition: ibuf_copytofd.c:5
ipv6addr
Definition: ipv6.h:11
str_case_start
int str_case_start(const str *a, const str *b)
Definition: case_start.c:45
str_case_ends
int str_case_ends(const str *a, const char *b)
Definition: case_end.c:39
str_case_startb
int str_case_startb(const str *a, const char *b, unsigned len)
Definition: case_start.c:24
str_catb
int str_catb(str *s, const char *in, unsigned len)
Definition: cat.c:43
obuf_putu
int obuf_putu(obuf *out, unsigned long data)
Definition: obuf_putunumw.c:21
ibuf_open
int ibuf_open(ibuf *in, const char *filename, unsigned bufsize)
Definition: ibuf_open.c:5
str_catsnumw
int str_catsnumw(str *s, long in, unsigned width, char pad, unsigned base, const char *digits)
Definition: catsnum.c:22
striter_start
void striter_start(striter *iter, const struct str *s, char sep)
Definition: iter_start.c:5
str_cati
int str_cati(str *s, long in)
Definition: catiw.c:22
str_catfv
int str_catfv(str *s, const char *format, va_list ap)
Definition: catf.c:22
str_catuwll
int str_catuwll(str *s, unsigned long long in, unsigned width, char pad)
Definition: catuwll.c:29
str_case_matchb
int str_case_matchb(const str *s, const char *pptr, unsigned plen)
Definition: case_match.c:24
fmt_unumw
unsigned fmt_unumw(char *buffer, unsigned long num, unsigned width, char pad, unsigned base, const char *digits)
Definition: unum.c:38
fmt_multiv
unsigned fmt_multiv(char *buffer, const char *format, va_list ap)
Definition: multi.c:152
str_catxw
int str_catxw(str *s, unsigned long in, unsigned width, char pad)
Definition: catxw.c:22
str_findnext
int str_findnext(const str *s, char ch, unsigned pos)
Definition: findnext.c:22
str_joins
int str_joins(str *s, char sep, const char *in)
Definition: join.c:28
str_cat2s
int str_cat2s(str *s, const char *a, const char *b)
Definition: cat2s.c:22
str_catu
int str_catu(str *s, unsigned long in)
Definition: catuw.c:28
obuf_endl
int obuf_endl(obuf *out)
Definition: obuf_endl.c:4
str_copyb
int str_copyb(str *s, const char *in, unsigned len)
Definition: copy.c:34
str_catullnumw
int str_catullnumw(str *s, unsigned long long in, unsigned width, char pad, unsigned base, const char *digits)
Definition: catullnum.c:23
str::len
unsigned len
Definition: str.h:40
path_mktemp
int path_mktemp(const char *prefix, str *filename)
Definition: mktemp.c:14
socket_bindu
int socket_bindu(int sock, const char *path)
Definition: bindu.c:27
FMT_ULONG_LEN
#define FMT_ULONG_LEN
Definition: fmt.h:54
cdb_make
Definition: cdb.h:47
str_catf
int str_catf(str *s, const char *format,...)
Definition: catf.c:40
obuf_putstr
#define obuf_putstr(out, str)
Definition: obuf.h:89
obuf_puts
#define obuf_puts(out, str)
Definition: obuf.h:74
has_magic
int has_magic(const char *s)
Definition: fnmatch.c:26
str_catsllnumw
int str_catsllnumw(str *s, long long in, unsigned width, char pad, unsigned base, const char *digits)
Definition: catsllnum.c:23
path_match
int path_match(const char *pattern, str *result, unsigned options)
Definition: path/match.c:130
fmt_udec
unsigned fmt_udec(char *buffer, unsigned long num)
Definition: udec.c:10
striter_loop
#define striter_loop(ITER, STR, SEP)
Definition: striter.h:43
ipv4addr::addr
uint8 addr[4]
Definition: ipv4.h:13
cdb
Definition: cdb.h:13
str_catx
int str_catx(str *s, unsigned long in)
Definition: catxw.c:28
fmt_snumw
unsigned fmt_snumw(char *buffer, long num, unsigned width, char pad, unsigned base, const char *digits)
Definition: snum.c:35
str_catunumw
int str_catunumw(str *s, unsigned long in, unsigned width, char pad, unsigned base, const char *digits)
Definition: catunum.c:22
socket_bind6
int socket_bind6(int sock, const ipv6addr *ip, ipv6port port)
Definition: bind6.c:27
str_catiwll
int str_catiwll(str *s, long long in, unsigned width, char pad)
Definition: catiwll.c:29
str_rstrip
void str_rstrip(str *s)
Definition: rstrip.c:22
ipv4addr
Definition: ipv4.h:11
str_catill
int str_catill(str *s, long long in)
Definition: catiwll.c:22
striter_advance
int striter_advance(striter *)
Definition: iter_advance.c:5
str_catns
int str_catns(str *s, unsigned int count,...)
Definition: catns.c:23
fmt_ullnumw
unsigned fmt_ullnumw(char *buffer, unsigned long long num, unsigned width, char pad, unsigned base, const char *digits)
Definition: ullnum.c:39
ibuf
Definition: ibuf.h:19
inbuf
ibuf inbuf
Definition: ibuf_stdin.c:7
str_buildmap
void str_buildmap(int map[256], const char *list)
Definition: buildmap.c:27
obuf_putf
int obuf_putf(obuf *out, const char *format,...)
Definition: obuf_putf.c:26
ipv4port
uint16 ipv4port
Definition: ipv4.h:16
ipv6addr::addr
uint8 addr[16]
Definition: ipv6.h:13
ibuf_close
#define ibuf_close(in)
Definition: ibuf.h:37
str_copys
int str_copys(str *s, const char *in)
Definition: copy.c:28
str_realloc
#define str_realloc(S, SZ)
Definition: str.h:74
striter
Definition: striter.h:15
str_case_end
int str_case_end(const str *a, const str *b)
Definition: case_end.c:45
ipv6port
uint16 ipv6port
Definition: ipv6.h:16
str_catuw
int str_catuw(str *s, unsigned long in, unsigned width, char pad)
Definition: catuw.c:22
striter_valid
int striter_valid(striter *)
Definition: iter_valid.c:5
str_join
int str_join(str *s, char sep, const str *t)
Definition: join.c:22
outbuf
obuf outbuf
Definition: obuf_stdout.c:7
str_case_match
int str_case_match(const str *s, const str *pattern)
Definition: case_match.c:57
str_case_starts
int str_case_starts(const str *a, const char *b)
Definition: case_start.c:39
path_mkdirs
int path_mkdirs(const char *path, unsigned mode)
Definition: mkdirs.c:16
striter::start
unsigned start
Definition: striter.h:20
str_case_matchs
int str_case_matchs(const str *s, const char *pattern)
Definition: case_match.c:63
str_cat
int str_cat(str *s, const str *in)
Definition: cat.c:22
socket_broadcast
int socket_broadcast(int fd)
Definition: broadcast.c:24
str_cats
int str_cats(str *s, const char *in)
Definition: cat.c:28
str_catull
int str_catull(str *s, unsigned long long in)
Definition: catuwll.c:22
fmt_lcase_digits
const char fmt_lcase_digits[36]
Definition: lcase.c:4
ibuf_getstr
int ibuf_getstr(ibuf *in, struct str *s, char boundary)
Definition: ibuf_getstr.c:5
str_cat6s
int str_cat6s(str *s, const char *a, const char *b, const char *c, const char *d, const char *e, const char *f)
Definition: cat6s.c:22
str_catxll
int str_catxll(str *s, unsigned long long in)
Definition: catxwll.c:22
str_cat5s
int str_cat5s(str *s, const char *a, const char *b, const char *c, const char *d, const char *e)
Definition: cat5s.c:22
str::size
unsigned size
Definition: str.h:42
str_catiw
int str_catiw(str *s, long in, unsigned width, char pad)
Definition: catiw.c:28
str_case_endb
int str_case_endb(const str *a, const char *b, unsigned len)
Definition: case_end.c:24
fmt_sllnumw
unsigned fmt_sllnumw(char *buffer, long long num, unsigned width, char pad, unsigned base, const char *digits)
Definition: sllnum.c:36
str_cat3s
int str_cat3s(str *s, const char *a, const char *b, const char *c)
Definition: cat3s.c:22
str_cat4s
int str_cat4s(str *s, const char *a, const char *b, const char *c, const char *d)
Definition: cat4s.c:22
obuf
Definition: obuf.h:21
str_subst
long str_subst(str *s, char from, char to)
Definition: subst.c:24
str_catc
int str_catc(str *s, char in)
Definition: cat.c:34
str
Definition: str.h:30
str_copy2s
int str_copy2s(str *s, const char *a, const char *b)
Definition: copy2s.c:22
socket_bind4
int socket_bind4(int sock, const ipv4addr *ip, ipv4port port)
Definition: bind4.c:26
obuf_putc
int obuf_putc(obuf *out, char ch)
Definition: obuf_putc.c:4