xref: /plan9/sys/src/libhttpd/alloc.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1*9a747e4fSDavid du Colombier #include <u.h>
2*9a747e4fSDavid du Colombier #include <libc.h>
3*9a747e4fSDavid du Colombier #include <bin.h>
4*9a747e4fSDavid du Colombier #include <httpd.h>
5*9a747e4fSDavid du Colombier 
6*9a747e4fSDavid du Colombier /*
7*9a747e4fSDavid du Colombier  * memory allocators:
8*9a747e4fSDavid du Colombier  * h routines call canalloc; they should be used by everything else
9*9a747e4fSDavid du Colombier  * note this memory is wiped out at the start of each new request
10*9a747e4fSDavid du Colombier  * note: these routines probably shouldn't fatal.
11*9a747e4fSDavid du Colombier  */
12*9a747e4fSDavid du Colombier char*
hstrdup(HConnect * c,char * s)13*9a747e4fSDavid du Colombier hstrdup(HConnect *c, char *s)
14*9a747e4fSDavid du Colombier {
15*9a747e4fSDavid du Colombier 	char *t;
16*9a747e4fSDavid du Colombier 	int n;
17*9a747e4fSDavid du Colombier 
18*9a747e4fSDavid du Colombier 	n = strlen(s) + 1;
19*9a747e4fSDavid du Colombier 	t = binalloc(&c->bin, n, 0);
20*9a747e4fSDavid du Colombier 	if(t == nil)
21*9a747e4fSDavid du Colombier 		sysfatal("out of memory");
22*9a747e4fSDavid du Colombier 	memmove(t, s, n);
23*9a747e4fSDavid du Colombier 	return t;
24*9a747e4fSDavid du Colombier }
25*9a747e4fSDavid du Colombier 
26*9a747e4fSDavid du Colombier void*
halloc(HConnect * c,ulong n)27*9a747e4fSDavid du Colombier halloc(HConnect *c, ulong n)
28*9a747e4fSDavid du Colombier {
29*9a747e4fSDavid du Colombier 	void *p;
30*9a747e4fSDavid du Colombier 
31*9a747e4fSDavid du Colombier 	p = binalloc(&c->bin, n, 1);
32*9a747e4fSDavid du Colombier 	if(p == nil)
33*9a747e4fSDavid du Colombier 		sysfatal("out of memory");
34*9a747e4fSDavid du Colombier 	return p;
35*9a747e4fSDavid du Colombier }
36