summaryrefslogtreecommitdiff
path: root/lib/new.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/new.c')
-rw-r--r--lib/new.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/new.c b/lib/new.c
index 4454f47..6c11fca 100644
--- a/lib/new.c
+++ b/lib/new.c
@@ -24,13 +24,18 @@
#include "aplwc_internal.h"
struct aplwc *
-aplwc_new(void)
+aplwc_new(void *(*alloc)(size_t), void (*free)(void *), void *(*realloc)(void *, size_t))
{
- struct aplwc *aplwc = malloc(sizeof(*aplwc));
+ struct aplwc *aplwc = alloc(sizeof(*aplwc));
memset(aplwc, 0, sizeof(*aplwc));
- aplwc->syscmds = malloc(sizeof(aplwc->syscmds[0]));
+ aplwc->alloc = alloc;
+ aplwc->free = free;
+ aplwc->realloc = realloc;
+
+ aplwc->syscmds = aplwc->alloc(sizeof(aplwc->syscmds[0]));
aplwc->syscmds[0] = NULL;
+ aplwc->running = true;
return aplwc;
}