[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v3 02/10] lib/nolibc: Add strndup and strdup functions
Port strdup function from Mini-OS. Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> --- lib/nolibc/exportsyms.uk | 2 ++ lib/nolibc/include/string.h | 2 ++ lib/nolibc/string.c | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/lib/nolibc/exportsyms.uk b/lib/nolibc/exportsyms.uk index 6492581..61d49c7 100644 --- a/lib/nolibc/exportsyms.uk +++ b/lib/nolibc/exportsyms.uk @@ -62,6 +62,8 @@ strcmp strcspn strspn strtok +strndup +strdup # time nanosleep diff --git a/lib/nolibc/include/string.h b/lib/nolibc/include/string.h index 1d63ae9..b21e2c1 100644 --- a/lib/nolibc/include/string.h +++ b/lib/nolibc/include/string.h @@ -61,6 +61,8 @@ int strcmp(const char *str1, const char *str2); size_t strcspn(const char *s, const char *c); size_t strspn(const char *s, const char *c); char *strtok(char *restrict s, const char *restrict sep); +char *strndup(const char *str, size_t len); +char *strdup(const char *str); #ifdef __cplusplus } diff --git a/lib/nolibc/string.c b/lib/nolibc/string.c index d4a6469..6f853ba 100644 --- a/lib/nolibc/string.c +++ b/lib/nolibc/string.c @@ -57,6 +57,7 @@ * ---------------------------------------------------------------------- */ +#include <stdlib.h> #include <stdint.h> #include <string.h> #include <limits.h> @@ -264,3 +265,24 @@ char *strtok(char *restrict s, const char *restrict sep) p = 0; return s; } + +char *strndup(const char *str, size_t len) +{ + char *__res; + int __len; + + __len = strnlen(str, len); + + __res = malloc(__len + 1); + if (__res) { + memcpy(__res, str, __len); + __res[__len] = '\0'; + } + + return __res; +} + +char *strdup(const char *str) +{ + return strndup(str, SIZE_MAX); +} -- 2.11.0 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |