195a264b3SDavid du Colombier #include <u.h> 295a264b3SDavid du Colombier #include <libc.h> 395a264b3SDavid du Colombier #include <bio.h> 495a264b3SDavid du Colombier #include <ndb.h> 595a264b3SDavid du Colombier 695a264b3SDavid du Colombier /* remove a from t and free it */ 795a264b3SDavid du Colombier Ndbtuple* ndbdiscard(Ndbtuple * t,Ndbtuple * a)895a264b3SDavid du Colombierndbdiscard(Ndbtuple *t, Ndbtuple *a) 995a264b3SDavid du Colombier { 1095a264b3SDavid du Colombier Ndbtuple *nt; 1195a264b3SDavid du Colombier 1295a264b3SDavid du Colombier /* unchain a */ 1395a264b3SDavid du Colombier for(nt = t; nt != nil; nt = nt->entry){ 1495a264b3SDavid du Colombier if(nt->line == a) 1595a264b3SDavid du Colombier nt->line = a->line; 1695a264b3SDavid du Colombier if(nt->entry == a) 1795a264b3SDavid du Colombier nt->entry = a->entry; 1895a264b3SDavid du Colombier } 1995a264b3SDavid du Colombier 2095a264b3SDavid du Colombier /* a may be start of chain */ 2195a264b3SDavid du Colombier if(t == a) 2295a264b3SDavid du Colombier t = a->entry; 2395a264b3SDavid du Colombier 2495a264b3SDavid du Colombier /* free a */ 2595a264b3SDavid du Colombier a->entry = nil; 2695a264b3SDavid du Colombier ndbfree(a); 2795a264b3SDavid du Colombier 28*1a4050f5SDavid du Colombier ndbsetmalloctag(t, getcallerpc(&t)); 2995a264b3SDavid du Colombier return t; 3095a264b3SDavid du Colombier } 31