summaryrefslogtreecommitdiff
path: root/Libraries/LibC
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibC')
-rw-r--r--Libraries/LibC/string.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/Libraries/LibC/string.cpp b/Libraries/LibC/string.cpp
index 3e1b7890d2..744f6fc470 100644
--- a/Libraries/LibC/string.cpp
+++ b/Libraries/LibC/string.cpp
@@ -216,10 +216,15 @@ char* strncpy(char* dest, const char* src, size_t n)
size_t strlcpy(char* dest, const char* src, size_t n)
{
- (void)dest;
- (void)src;
- (void)n;
- return 42; // TODO
+ size_t i;
+ // Would like to test i < n - 1 here, but n might be 0.
+ for (i = 0; i + 1 < n && src[i] != '\0'; ++i)
+ dest[i] = src[i];
+ if (n)
+ dest[i] = '\0';
+ for (; src[i] != '\0'; ++i)
+ ; // Determine the length of src, don't copy.
+ return i;
}
char* strchr(const char* str, int c)