diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-04-28 04:38:34 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-04-28 04:38:34 +0200 |
commit | dbfb32056693662b9843b47c70a672f32ea55d8b (patch) | |
tree | 67f89dadd378cc42f390193945d676cb19fb7996 /sys/src/libndb/ndbgetval.c | |
parent | 5aae3d344b9f362539f06d20ea5ca80a0c8b3a78 (diff) |
libndb: cleanup
Diffstat (limited to 'sys/src/libndb/ndbgetval.c')
-rw-r--r-- | sys/src/libndb/ndbgetval.c | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/sys/src/libndb/ndbgetval.c b/sys/src/libndb/ndbgetval.c index 749cc1564..9bc8058c8 100644 --- a/sys/src/libndb/ndbgetval.c +++ b/sys/src/libndb/ndbgetval.c @@ -7,7 +7,7 @@ * search for a tuple that has the given 'attr=val' and also 'rattr=x'. * copy 'x' into 'buf' and return the whole tuple. * - * return 0 if not found. + * return nil if not found. */ char* ndbgetvalue(Ndb *db, Ndbs *s, char *attr, char *val, char *rattr, Ndbtuple **pp) @@ -21,32 +21,15 @@ ndbgetvalue(Ndb *db, Ndbs *s, char *attr, char *val, char *rattr, Ndbtuple **pp) if(pp) *pp = nil; t = ndbsearch(db, s, attr, val); - while(t){ - /* first look on same line (closer binding) */ - nt = s->t; - for(;;){ - if(strcmp(rattr, nt->attr) == 0){ - rv = strdup(nt->val); - if(pp != nil) - *pp = t; - else - ndbfree(t); - return rv; - } - nt = nt->line; - if(nt == s->t) - break; - } - /* search whole tuple */ - for(nt = t; nt; nt = nt->entry){ - if(strcmp(rattr, nt->attr) == 0){ - rv = strdup(nt->val); - if(pp != nil) - *pp = t; - else - ndbfree(t); - return rv; - } + while(t != nil){ + nt = ndbfindattr(t, s->t, rattr); + if(nt != nil){ + rv = strdup(nt->val); + if(pp != nil) + *pp = t; + else + ndbfree(t); + return rv; } ndbfree(t); t = ndbsnext(s, attr, val); |