ref: 6e579fe41c8c7e5bd9077b15a3c63c731140b82d
dir: /sys/src/libndb/ndbdiscard.c/
#include <u.h> #include <libc.h> #include <bio.h> #include <ndb.h> /* remove a from t and free it */ Ndbtuple* ndbdiscard(Ndbtuple *t, Ndbtuple *a) { Ndbtuple *nt; /* unchain a */ for(nt = t; nt != nil; nt = nt->entry){ if(nt->line == a) nt->line = a->line; if(nt->entry == a) nt->entry = a->entry; } /* a may be start of chain */ if(t == a) t = a->entry; /* free a */ a->entry = nil; ndbfree(a); return t; }