aboutsummaryrefslogtreecommitdiff
path: root/src/libhttpd/alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libhttpd/alloc.c')
-rw-r--r--src/libhttpd/alloc.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/libhttpd/alloc.c b/src/libhttpd/alloc.c
new file mode 100644
index 00000000..1fdd46c6
--- /dev/null
+++ b/src/libhttpd/alloc.c
@@ -0,0 +1,35 @@
+#include <u.h>
+#include <libc.h>
+#include <bin.h>
+#include <httpd.h>
+
+/*
+ * memory allocators:
+ * h routines call canalloc; they should be used by everything else
+ * note this memory is wiped out at the start of each new request
+ * note: these routines probably shouldn't fatal.
+ */
+char*
+hstrdup(HConnect *c, char *s)
+{
+ char *t;
+ int n;
+
+ n = strlen(s) + 1;
+ t = binalloc(&c->bin, n, 0);
+ if(t == nil)
+ sysfatal("out of memory");
+ memmove(t, s, n);
+ return t;
+}
+
+void*
+halloc(HConnect *c, ulong n)
+{
+ void *p;
+
+ p = binalloc(&c->bin, n, 1);
+ if(p == nil)
+ sysfatal("out of memory");
+ return p;
+}