21static int mffind(
char *mf)
37 datalen = cdb_datalen(&
cdb);
38 data = alloc(datalen);
40 if (!datalen)
return 1;
43 if (cdb_read(&
cdb,
data,datalen,cdb_datapos(&
cdb)) == -1) {
54 delta = (mflen > len) ? mflen - len : 0;
55 if (!byte_diff(x,len,mf + delta)) { alloc_free(
data);
return 2; }
63static int mfsearch(
char *ip,
char *
host,
char *info,
char *mf)
70 if (r < -1 || r > 0)
return r;
72 if (!stralloc_cats(&
key,
"@"))
return -9;
73 if (!stralloc_cats(&
key,ip))
return -9;
75 if (r < -1 || r > 0)
return r;
79 if (!stralloc_cats(&
key,
"@="))
return -9;
80 if (!stralloc_cats(&
key,
host))
return -9;
82 if (r < -1 || r > 0)
return r;
88 if (r < -1 || r > 0)
return r;
92 if (!stralloc_cats(&
key,
host))
return -9;
94 if (r < -1 || r > 0)
return r;
99 if (ip[
key.len - 1] ==
':') {
101 if (r < -1 || r > 0)
return r;
107 while (
key.len > 0) {
108 if (ip[
key.len - 1] ==
'.') {
110 if (r < -1 || r > 0)
return r;
119 if (!stralloc_cats(&
key,
host))
return -9;
121 if (r < -1 || r > 0)
return r;
127 if (r < -1 || r > 0)
return r;
141 r = mfsearch(ip,
host,info,mf);
int stralloc_copys(stralloc *, char const *)
int mfrules(int fd, char *ip, char *host, char *info, char *mf)