code: plan9front

ref: 365e63b36a413703f5fcd0ed5ccbd79c3a53afbf
dir: /sys/src/libndb/ndbdedup.c/

View raw version
#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;
}