summaryrefslogtreecommitdiff
path: root/sys/src/libndb/ndbgetval.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-04-28 04:38:34 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-04-28 04:38:34 +0200
commitdbfb32056693662b9843b47c70a672f32ea55d8b (patch)
tree67f89dadd378cc42f390193945d676cb19fb7996 /sys/src/libndb/ndbgetval.c
parent5aae3d344b9f362539f06d20ea5ca80a0c8b3a78 (diff)
libndb: cleanup
Diffstat (limited to 'sys/src/libndb/ndbgetval.c')
-rw-r--r--sys/src/libndb/ndbgetval.c37
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);