13 static stralloc ipstring = {0};
15 fd = open_read(
"data.cdb");
16 if (
fd == -1)
return 0;
22 if (byte_equal(
ip,12,V4mappedprefix)) {
23 ip4_bytestring(&ipstring,
ip + 12,32);
24 byte_copy(key + 2,32,ipstring.s);
25 for (i = 0; i < 32; i++) {
26 r = cdb_find(&
c,key,34 - i);
27 if (r == -1)
return 0;
30 if (!r) r = cdb_find(&
c,key,2);
31 if (r && (cdb_datalen(&
c) == 2))
32 if (cdb_read(&
c,
clientloc,2,cdb_datapos(&
c)) == -1)
return 0;
34 ip6_bytestring(&ipstring,
ip,64);
35 byte_copy(key + 2,64,ipstring.s);
36 for (i = 0; i < 64; i++) {
37 r = cdb_find(&
c,key,66 - i);
38 if (r == -1)
return 0;
41 if (!r) r = cdb_find(&
c,key,2);
42 if (r && (cdb_datalen(&
c) == 2))
43 if (cdb_read(&
c,
clientloc,2,cdb_datapos(&
c)) == -1)
return 0;
int find_clientloc(char clientloc[2], const char ip[16])
void c(const char *home, const char *subdir, const char *file, int uid, int gid, int mode)