diff options
| author | rsc <devnull@localhost> | 2005-02-11 19:41:16 +0000 |
|---|---|---|
| committer | rsc <devnull@localhost> | 2005-02-11 19:41:16 +0000 |
| commit | d957951b75df08a9bb0293e3e13ff87759afbb92 (patch) | |
| tree | 4d7868b0d223956217cbc8819d7afb3bec532cca /src/libndb/ndbdiscard.c | |
| parent | ad017cfbf5530cfc3ae2fafd723cdade2a4405f6 (diff) | |
| download | plan9port-d957951b75df08a9bb0293e3e13ff87759afbb92.tar.gz plan9port-d957951b75df08a9bb0293e3e13ff87759afbb92.zip | |
new
Diffstat (limited to 'src/libndb/ndbdiscard.c')
| -rw-r--r-- | src/libndb/ndbdiscard.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/libndb/ndbdiscard.c b/src/libndb/ndbdiscard.c new file mode 100644 index 00000000..9b2fc0c9 --- /dev/null +++ b/src/libndb/ndbdiscard.c @@ -0,0 +1,29 @@ +#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; +} |
