| #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); |