Syscall tests for PATH_MAX
[akaros.git] / user / ndblib / ndbdiscard.c
1 /* 
2  * This file is part of the UCB release of Plan 9. It is subject to the license
3  * terms in the LICENSE file found in the top-level directory of this
4  * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
5  * part of the UCB release of Plan 9, including this file, may be copied,
6  * modified, propagated, or distributed except according to the terms contained
7  * in the LICENSE file.
8  */
9 #include <stdlib.h>
10
11 #include <stdio.h>
12 #include <parlib.h>
13 #include <unistd.h>
14 #include <signal.h>
15 #include <fcntl.h>
16 #include <iplib.h>
17 #include <ndb.h>
18
19 /* remove a from t and free it */
20 struct ndbtuple*
21 ndbdiscard(struct ndbtuple *t, struct ndbtuple *a)
22 {
23         struct ndbtuple *nt;
24
25         /* unchain a */
26         for(nt = t; nt != NULL; nt = nt->entry){
27                 if(nt->line == a)
28                         nt->line = a->line;
29                 if(nt->entry == a)
30                         nt->entry = a->entry;
31         }
32
33         /* a may be start of chain */
34         if(t == a)
35                 t = a->entry;
36
37         /* free a */
38         a->entry = NULL;
39         ndbfree(a);
40
41         ndbsetmalloctag(t, getcallerpc(&t));
42         return t;
43 }