plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

ndbdiscard.c (436B)


      1 #include <u.h>
      2 #include <libc.h>
      3 #include <bio.h>
      4 #include <ndb.h>
      5 
      6 /* remove a from t and free it */
      7 Ndbtuple*
      8 ndbdiscard(Ndbtuple *t, Ndbtuple *a)
      9 {
     10 	Ndbtuple *nt;
     11 
     12 	/* unchain a */
     13 	for(nt = t; nt != nil; nt = nt->entry){
     14 		if(nt->line == a)
     15 			nt->line = a->line;
     16 		if(nt->entry == a)
     17 			nt->entry = a->entry;
     18 	}
     19 
     20 	/* a may be start of chain */
     21 	if(t == a)
     22 		t = a->entry;
     23 
     24 	/* free a */
     25 	a->entry = nil;
     26 	ndbfree(a);
     27 
     28 	return t;
     29 }