diff -r 27e5e30d3c30 sys/include/ape/string.h --- a/sys/include/ape/string.h Wed Nov 18 20:14:26 2020 +0100 +++ b/sys/include/ape/string.h Fri Nov 20 09:19:00 2020 +0300 @@ -19,6 +19,7 @@ extern int strcmp(const char *, const char *); extern int strcoll(const char *, const char *); extern char *strdup(char*); +extern char *strndup(char*, size_t); extern int strncmp(const char *, const char *, size_t); extern size_t strxfrm(char *, const char *, size_t); extern void *memchr(const void *, int, size_t); diff -r 27e5e30d3c30 sys/src/ape/lib/ap/gen/mkfile --- a/sys/src/ape/lib/ap/gen/mkfile Wed Nov 18 20:14:26 2020 +0100 +++ b/sys/src/ape/lib/ap/gen/mkfile Fri Nov 20 09:19:00 2020 +0300 @@ -44,6 +44,7 @@ strncat.$O\ strncmp.$O\ strncpy.$O\ + strndup.$O\ strnlen.$O\ strpbrk.$O\ strrchr.$O\ diff -r 27e5e30d3c30 sys/src/ape/lib/ap/gen/strndup.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sys/src/ape/lib/ap/gen/strndup.c Fri Nov 20 09:19:00 2020 +0300 @@ -0,0 +1,14 @@ +#include +#include +#include + +char* +strndup(char *p, size_t len) +{ + char *np; + + np = malloc(len+1); + if(np) + memmove(np, p, len+1); + return np; +}