Index: fusl/src/locale/wcsxfrm.c |
diff --git a/fusl/src/locale/wcsxfrm.c b/fusl/src/locale/wcsxfrm.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0a0b776dadf46aa65c91303dd43776b22c158679 |
--- /dev/null |
+++ b/fusl/src/locale/wcsxfrm.c |
@@ -0,0 +1,24 @@ |
+#include <wchar.h> |
+#include <locale.h> |
+#include "locale_impl.h" |
+#include "libc.h" |
+ |
+/* collate only by code points */ |
+size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t loc) |
+{ |
+ size_t l = wcslen(src); |
+ if (l < n) { |
+ wmemcpy(dest, src, l+1); |
+ } else if (n) { |
+ wmemcpy(dest, src, n-1); |
+ dest[n-1] = 0; |
+ } |
+ return l; |
+} |
+ |
+size_t wcsxfrm(wchar_t *restrict dest, const wchar_t *restrict src, size_t n) |
+{ |
+ return __wcsxfrm_l(dest, src, n, CURRENT_LOCALE); |
+} |
+ |
+weak_alias(__wcsxfrm_l, wcsxfrm_l); |