diff options
| -rw-r--r-- | sys/src/libndb/ndbdedup.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/sys/src/libndb/ndbdedup.c b/sys/src/libndb/ndbdedup.c new file mode 100644 index 000000000..7c0c4284a --- /dev/null +++ b/sys/src/libndb/ndbdedup.c @@ -0,0 +1,30 @@ +#include <u.h> +#include <libc.h> +#include <bio.h> +#include <ndb.h> + +/* + * remove duplicates + */ +Ndbtuple* +ndbdedup(Ndbtuple *t) +{ + Ndbtuple *nt, *last, *tt; + + for(nt = t; nt != nil; nt = nt->entry){ + last = nt; + for(tt = nt->entry; tt != nil; tt = last->entry){ + if(strcmp(nt->attr, tt->attr) != 0 + || strcmp(nt->val, tt->val) != 0){ + last = tt; + continue; + } + if(last->line == tt) + last->line = tt->line; + last->entry = tt->entry; + tt->entry = nil; + ndbfree(tt); + } + } + return t; +} |
