ref: 4e91e4a2dbab9d79e1047cfc2094a438561b5a21
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; }