summaryrefslogtreecommitdiff
path: root/sys/src/libndb/ndbdedup.c
blob: 7c0c4284a0bcdb83db3a756bee518b149d3bf8c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;
}