From 98e583430fb7b793119db27bad9f98119e81579f Mon Sep 17 00:00:00 2001 From: Thorsten von Eicken Date: Thu, 2 Jul 2020 12:48:16 -0700 Subject: [PATCH] lib/libc: Add implementation of strncpy. --- lib/libc/string0.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/libc/string0.c b/lib/libc/string0.c index 8c86bf65f7..5f40a71e3e 100644 --- a/lib/libc/string0.c +++ b/lib/libc/string0.c @@ -169,6 +169,23 @@ char *strcpy(char *dest, const char *src) { return dest; } +// Public Domain implementation of strncpy from: +// http://en.wikibooks.org/wiki/C_Programming/Strings#The_strncpy_function +char *strncpy(char *s1, const char *s2, size_t n) { + char *dst = s1; + const char *src = s2; + /* Copy bytes, one at a time. */ + while (n > 0) { + n--; + if ((*dst++ = *src++) == '\0') { + /* If we get here, we found a null character at the end of s2 */ + *dst = '\0'; + break; + } + } + return s1; + } + // needed because gcc optimises strcpy + strcat to this char *stpcpy(char *dest, const char *src) { while (*src) {