ndblookval.c (791B)
1 #include <u.h> 2 #include <libc.h> 3 #include <bio.h> 4 #include <ip.h> 5 #include <ndb.h> 6 7 /* 8 * Look for a pair with the given attribute. look first on the same line, 9 * then in the whole entry. 10 */ 11 Ndbtuple* 12 ndbfindattr(Ndbtuple *entry, Ndbtuple *line, char *attr) 13 { 14 Ndbtuple *nt; 15 16 /* first look on same line (closer binding) */ 17 for(nt = line; nt;){ 18 if(strcmp(attr, nt->attr) == 0) 19 return nt; 20 nt = nt->line; 21 if(nt == line) 22 break; 23 } 24 25 /* search whole tuple */ 26 for(nt = entry; nt; nt = nt->entry) 27 if(strcmp(attr, nt->attr) == 0) 28 return nt; 29 30 return nil; 31 } 32 33 Ndbtuple* 34 ndblookval(Ndbtuple *entry, Ndbtuple *line, char *attr, char *to) 35 { 36 Ndbtuple *t; 37 38 t = ndbfindattr(entry, line, attr); 39 if(t != nil){ 40 strncpy(to, t->val, Ndbvlen-1); 41 to[Ndbvlen-1] = 0; 42 } 43 return t; 44 }