17dd7cddfSDavid du Colombier #include <u.h>
27dd7cddfSDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier #include <bio.h>
47dd7cddfSDavid du Colombier #include <ip.h>
57dd7cddfSDavid du Colombier #include <ndb.h>
67dd7cddfSDavid du Colombier
77dd7cddfSDavid du Colombier /*
87dd7cddfSDavid du Colombier * Look for a pair with the given attribute. look first on the same line,
97dd7cddfSDavid du Colombier * then in the whole entry.
107dd7cddfSDavid du Colombier */
117dd7cddfSDavid du Colombier Ndbtuple*
ndbfindattr(Ndbtuple * entry,Ndbtuple * line,char * attr)12*57837e0bSDavid du Colombier ndbfindattr(Ndbtuple *entry, Ndbtuple *line, char *attr)
137dd7cddfSDavid du Colombier {
147dd7cddfSDavid du Colombier Ndbtuple *nt;
157dd7cddfSDavid du Colombier
167dd7cddfSDavid du Colombier /* first look on same line (closer binding) */
17*57837e0bSDavid du Colombier for(nt = line; nt;){
18*57837e0bSDavid du Colombier if(strcmp(attr, nt->attr) == 0)
197dd7cddfSDavid du Colombier return nt;
207dd7cddfSDavid du Colombier nt = nt->line;
217dd7cddfSDavid du Colombier if(nt == line)
227dd7cddfSDavid du Colombier break;
237dd7cddfSDavid du Colombier }
247dd7cddfSDavid du Colombier
257dd7cddfSDavid du Colombier /* search whole tuple */
267dd7cddfSDavid du Colombier for(nt = entry; nt; nt = nt->entry)
27*57837e0bSDavid du Colombier if(strcmp(attr, nt->attr) == 0)
287dd7cddfSDavid du Colombier return nt;
29*57837e0bSDavid du Colombier
30*57837e0bSDavid du Colombier return nil;
317dd7cddfSDavid du Colombier }
3295a264b3SDavid du Colombier
3395a264b3SDavid du Colombier Ndbtuple*
ndblookval(Ndbtuple * entry,Ndbtuple * line,char * attr,char * to)3495a264b3SDavid du Colombier ndblookval(Ndbtuple *entry, Ndbtuple *line, char *attr, char *to)
3595a264b3SDavid du Colombier {
36*57837e0bSDavid du Colombier Ndbtuple *t;
37*57837e0bSDavid du Colombier
38*57837e0bSDavid du Colombier t = ndbfindattr(entry, line, attr);
39*57837e0bSDavid du Colombier if(t != nil){
40*57837e0bSDavid du Colombier strncpy(to, t->val, Ndbvlen-1);
41*57837e0bSDavid du Colombier to[Ndbvlen-1] = 0;
42*57837e0bSDavid du Colombier }
43*57837e0bSDavid du Colombier return t;
4495a264b3SDavid du Colombier }
45