summaryrefslogtreecommitdiff
path: root/src/server/shibari_tdb_read_entry.c
blob: b2d877c473088bb8f14aed4d0f1d7bcb702133ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* ISC license. */

#include <skalibs/cdb.h>

#include <shibari/tdb.h>

int shibari_tdb_read_entry (cdb const *tdb, cdb_find_state *state, shibari_tdb_entry *out, char const *s, uint16_t len, uint16_t qtype, unsigned int wild, char const *loc, tain const *stamp, uint32_t *flags)
{
  cdb_data data ;
  int r = 0 ;
  while (!r)
  {
    r = cdb_findnext(tdb, &data, s, len, state) ;
    if (r <= 0) return r ;
    if (flags) *flags |= 1 ;
    r = shibari_tdb_entry_parse(out, data.s, data.len, qtype, wild, loc, stamp) ;
    if (r == -1) return -1 ;
  }
  out->key.s = s ;
  out->key.len = len ;
  return 1 ;
}