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/csgetval.c | |
parent | 5aae3d344b9f362539f06d20ea5ca80a0c8b3a78 (diff) |
libndb: cleanup
Diffstat (limited to 'sys/src/libndb/csgetval.c')
-rw-r--r-- | sys/src/libndb/csgetval.c | 46 |
1 files changed, 15 insertions, 31 deletions
diff --git a/sys/src/libndb/csgetval.c b/sys/src/libndb/csgetval.c index 9bd6123c1..a1f6a9052 100644 --- a/sys/src/libndb/csgetval.c +++ b/sys/src/libndb/csgetval.c @@ -14,15 +14,12 @@ char* csgetvalue(char *netroot, char *attr, char *val, char *rattr, Ndbtuple **pp) { Ndbtuple *t, *first, *last; - int n, linefound; char line[1024]; - int fd; - int oops = 0; + int fd, n; char *rv; - if(pp) + if(pp != nil) *pp = nil; - rv = nil; if(netroot) snprint(line, sizeof(line), "%s/cs", netroot); @@ -30,17 +27,17 @@ csgetvalue(char *netroot, char *attr, char *val, char *rattr, Ndbtuple **pp) strcpy(line, "/net/cs"); fd = open(line, ORDWR); if(fd < 0) - return 0; + return nil; seek(fd, 0, 0); snprint(line, sizeof(line), "!%s=%s %s=*", attr, val, rattr); if(write(fd, line, strlen(line)) < 0){ close(fd); - return 0; + return nil; } seek(fd, 0, 0); - first = last = 0; - linefound = 0; + rv = nil; + first = last = nil; for(;;){ n = read(fd, line, sizeof(line)-2); if(n <= 0) @@ -49,35 +46,22 @@ csgetvalue(char *netroot, char *attr, char *val, char *rattr, Ndbtuple **pp) line[n+1] = 0; t = _ndbparseline(line); - if(t == 0) + if(t == nil) continue; - if(first) + if(first != nil) last->entry = t; else first = t; - last = t; - - while(last->entry) - last = last->entry; - - for(; t; t = t->entry){ - if(linefound == 0){ - if(strcmp(rattr, t->attr) == 0){ - linefound = 1; - rv = strdup(t->val); - } - } - } + do { + last = t; + if(rv == nil && strcmp(rattr, t->attr) == 0) + rv = strdup(t->val); + t = t->entry; + } while(t != nil); } close(fd); - if(oops){ - werrstr("buffer too short"); - ndbfree(first); - return nil; - } - - if(pp){ + if(pp != nil){ setmalloctag(first, getcallerpc(&netroot)); *pp = first; } else |