summaryrefslogtreecommitdiff
path: root/src/user/knob/block.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/knob/block.c')
-rw-r--r--src/user/knob/block.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/user/knob/block.c b/src/user/knob/block.c
index 4ec0564..94bd073 100644
--- a/src/user/knob/block.c
+++ b/src/user/knob/block.c
@@ -1,5 +1,6 @@
-#include <stdint.h>
#include <stdbool.h>
+#include <stdint.h>
+#include <knob/heap.h>
//unsophisticated, should copy by dwords where available
void blockcpy(void *to, const void *from, uint32_t size) {
@@ -23,4 +24,13 @@ uint32_t strcpy(char *to, const char *from) {
to[i] = from[i];
while (from[i++]);
return i - 1;
+}
+
+char *strdup(const char *from) {
+ const char *end = from;
+ while (*(end++))
+ ;
+ char *buf = get_block(end - from);
+ blockcpy(buf, from, end - from);
+ return buf;
} \ No newline at end of file