1 --- wcsxfrm.c.orig Thu Nov 25 11:38:47 2004
2 +++ wcsxfrm.c Fri Feb 18 15:01:58 2005
5 __FBSDID("$FreeBSD: src/lib/libc/string/wcsxfrm.c,v 1.3 2004/04/07 09:47:56 tjr Exp $");
7 +#include "xlocale_private.h"
14 -static char *__mbsdup(const wchar_t *);
15 +static char *__mbsdup(const wchar_t *, locale_t);
18 * Placeholder wcsxfrm() implementation. See wcscoll.c for a description of
22 -wcsxfrm(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len)
23 +wcsxfrm_l(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len,
30 + NORMALIZE_LOCALE(loc);
37 - if (__collate_load_error || MB_CUR_MAX > 1) {
38 + if (loc->__collate_load_error || MB_CUR_MAX_L(loc) > 1) {
46 - mbsrc = __mbsdup(src);
47 + mbsrc = __mbsdup(src, loc);
50 - ss = s = __collate_substitute(mbsrc);
51 + ss = s = (char *)__collate_substitute_l((unsigned char *)mbsrc, loc);
53 while (*s != '\0' && prim == 0) {
54 - __collate_lookup(s, &l, &prim, &sec);
55 + __collate_lookup_l((unsigned char *)s, &l, &prim, &sec, loc);
64 +wcsxfrm(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len)
66 + return wcsxfrm_l(dest, src, len, __current_locale());
70 -__mbsdup(const wchar_t *ws)
71 +__mbsdup(const wchar_t *ws, locale_t loc)
73 static const mbstate_t initial;
79 - if ((len = wcsrtombs(NULL, &wcp, 0, &st)) == (size_t)-1)
80 + if ((len = wcsrtombs_l(NULL, &wcp, 0, &st, loc)) == (size_t)-1)
82 if ((mbs = malloc(len + 1)) == NULL)
85 - wcsrtombs(mbs, &ws, len + 1, &st);
86 + wcsrtombs_l(mbs, &ws, len + 1, &st, loc);