diff --git a/libc/Makefile b/libc/Makefile
index 22457aa2..963cde43 100644
--- a/libc/Makefile
+++ b/libc/Makefile
@@ -255,6 +255,8 @@ wchar/wcscpy.o \
wchar/wcscspn.o \
wchar/wcsdup.o \
wchar/wcsftime.o \
+wchar/wcslcat.o \
+wchar/wcslcpy.o \
wchar/wcslen.o \
wchar/wcsncasecmp.o \
wchar/wcsncat.o \
diff --git a/libc/include/wchar.h b/libc/include/wchar.h
index 0a039219..90083010 100644
--- a/libc/include/wchar.h
+++ b/libc/include/wchar.h
@@ -222,6 +222,8 @@ size_t wcsnrtombs(char* __restrict, const wchar_t** __restrict, size_t, size_t,
/* TODO: fputws_unlocked */
wchar_t* wcschrnul(const wchar_t*, wchar_t);
/* TODO: wcsftime_l */
+size_t wcslcat(wchar_t* __restrict, const wchar_t* __restrict, size_t);
+size_t wcslcpy(wchar_t* __restrict, const wchar_t* __restrict, size_t);
/* TODO: wchar_t* wmempcpy(wchar_t* __restrict, const wchar_t* __restrict, size_t); */
/* TODO: wcstod_l? */
/* TODO: wcstof_l? */
diff --git a/libc/wchar/wcslcat.cpp b/libc/wchar/wcslcat.cpp
new file mode 100644
index 00000000..347d3366
--- /dev/null
+++ b/libc/wchar/wcslcat.cpp
@@ -0,0 +1,34 @@
+/*******************************************************************************
+
+ Copyright(C) Jonas 'Sortie' Termansen 2014.
+
+ This file is part of the Sortix C Library.
+
+ The Sortix C Library is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or (at your
+ option) any later version.
+
+ The Sortix C Library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with the Sortix C Library. If not, see .
+
+ wchar/wcslcat.cpp
+ Appends a string onto another string truncating if the string is too small.
+
+*******************************************************************************/
+
+#include
+
+extern "C"
+size_t wcslcat(wchar_t* restrict dest, const wchar_t* restrict src, size_t size)
+{
+ size_t dest_len = wcsnlen(dest, size);
+ if ( size <= dest_len )
+ return dest_len + wcslen(src);
+ return dest_len + wcslcpy(dest + dest_len, src, size - dest_len);
+}
diff --git a/libc/wchar/wcslcpy.cpp b/libc/wchar/wcslcpy.cpp
new file mode 100644
index 00000000..edf29e80
--- /dev/null
+++ b/libc/wchar/wcslcpy.cpp
@@ -0,0 +1,37 @@
+/*******************************************************************************
+
+ Copyright(C) Jonas 'Sortie' Termansen 2014.
+
+ This file is part of the Sortix C Library.
+
+ The Sortix C Library is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or (at your
+ option) any later version.
+
+ The Sortix C Library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with the Sortix C Library. If not, see .
+
+ wchar/wcslcpy.cpp
+ Copies a string and truncates it if the destination is too small.
+
+*******************************************************************************/
+
+#include
+
+extern "C"
+size_t wcslcpy(wchar_t* restrict dest, const wchar_t* restrict src, size_t size)
+{
+ if ( !size )
+ return wcslen(src);
+ size_t result;
+ for ( result = 0; result < size-1 && src[result]; result++ )
+ dest[result] = src[result];
+ dest[result] = L'\0';
+ return result + wcslen(src + result);
+}