diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-09-16 12:39:47 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-09-16 12:39:47 +0200 |
commit | a4e444f430b874661f2793d8f9d1daeab60a89b1 (patch) | |
tree | 33ed9966cf0619211b4a0cff84ebd3a9097f78ab /sys/src/cmd/ndb | |
parent | 08385e66816940b999a5c433a1feef303cea67e4 (diff) |
libndb: make ndbipinfo() walk ipnet for all matching entries, concatenate and dedup result
Diffstat (limited to 'sys/src/cmd/ndb')
-rw-r--r-- | sys/src/cmd/ndb/cs.c | 29 | ||||
-rw-r--r-- | sys/src/cmd/ndb/dblookup.c | 2 |
2 files changed, 4 insertions, 27 deletions
diff --git a/sys/src/cmd/ndb/cs.c b/sys/src/cmd/ndb/cs.c index 0979d4976..ca92c0c49 100644 --- a/sys/src/cmd/ndb/cs.c +++ b/sys/src/cmd/ndb/cs.c @@ -1392,7 +1392,7 @@ myipinfo(Ndb *db, char **list, int n) } qunlock(&ipifclock); - return t; + return ndbdedup(t); } /* @@ -1919,29 +1919,6 @@ ipresolve(char *attr, char *host) return t; } -/* - * remove duplicates - */ -static Ndbtuple* -ndbdedup(Ndbtuple *t) -{ - Ndbtuple *tt, *nt, **l; - - for(nt = t; nt != nil; nt = nt->entry){ - for(l = &nt->entry; (tt = *l) != nil;){ - if(strcmp(nt->attr, tt->attr) != 0 - || strcmp(nt->val, tt->val) != 0){ - l = &tt->entry; - continue; - } - *l = tt->entry; - tt->entry = nil; - ndbfree(tt); - } - } - return t; -} - char* ipinfoquery(Mfile *mf, char **list, int n) { @@ -1992,7 +1969,6 @@ ipinfoquery(Mfile *mf, char **list, int n) return "no match"; if(nresolve != 0){ - t = ndbdedup(t); for(l = &t; *l != nil;){ nt = *l; @@ -2020,8 +1996,9 @@ ipinfoquery(Mfile *mf, char **list, int n) nt->entry = nil; ndbfree(nt); } + + t = ndbdedup(t); } - t = ndbdedup(t); /* make it all one line */ t = ndbline(t); diff --git a/sys/src/cmd/ndb/dblookup.c b/sys/src/cmd/ndb/dblookup.c index 20d58502f..601bf893f 100644 --- a/sys/src/cmd/ndb/dblookup.c +++ b/sys/src/cmd/ndb/dblookup.c @@ -794,7 +794,7 @@ lookupinfo(char *attr) qunlock(&ipifclock); qunlock(&dblock); - return t; + return ndbdedup(t); } /* |