X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Fstring.c;fp=Usermode%2FLibraries%2Flibc.so_src%2Fstring.c;h=e85356d5b11b46f7c99922b947b9f4e352f141a7;hb=efa38e0d56b1b620b6f4e5c4f91abc483a3065e2;hp=98692b215b9f00f510470ad2d5c68f7fc4f9c617;hpb=a928d1d2a70761eece125cdbe9950ec0b1112ce3;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/string.c b/Usermode/Libraries/libc.so_src/string.c index 98692b21..e85356d5 100644 --- a/Usermode/Libraries/libc.so_src/string.c +++ b/Usermode/Libraries/libc.so_src/string.c @@ -101,6 +101,24 @@ EXPORT char *strdup(const char *str) return ret; } +/** + * \fn EXPORT char *strndup(const char *str, size_t maxlen) + * \brief Duplicate a string into the heap with a maximum length + * \param str Input string buffer + * \param maxlen Maximum valid size of the \a str buffer + * \return Heap string with the same value of \a str + */ +EXPORT char *strndup(const char *str, size_t maxlen) +{ + size_t len; + char *ret; + for( len = 0; len < maxlen && str[len]; len ++) ; + ret = malloc( len + 1); + memcpy( ret, str, len ); + ret[len] = '\0'; + return ret; +} + /** * \fn EXPORT char *strchr(char *str, int character) * \brief Locate a character in a string