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