1139823Simp#ifndef __NetBSD__
2157067Srwatson#include <xlocale.h>
3157067Srwatson
4192753Srwatsonstatic __inline int
5157067SrwatsonMB_CUR_MAX_L(locale_t __l) {
611819Sjulian	locale_t __old = uselocale(__l);
711819Sjulian	size_t __rv = MB_CUR_MAX;
811819Sjulian	(void)uselocale(__old);
911819Sjulian	return __rv;
1011819Sjulian}
1111819Sjulian
1211819Sjulianstatic __inline size_t
1311819Sjulianwcsnrtombs_l(char * __restrict __to, const wchar_t ** __restrict __from,
1411819Sjulian    size_t __nwc, size_t __len, mbstate_t * __restrict __st, locale_t __l)
15165899Srwatson{
16165899Srwatson	locale_t __old = uselocale(__l);
17165899Srwatson	size_t __rv = wcsnrtombs(__to, __from, __nwc, __len, __st);
18165899Srwatson	(void)uselocale(__old);
19165899Srwatson	return __rv;
20165899Srwatson}
21165899Srwatson
22165899Srwatsonstatic __inline size_t
23165899Srwatsonmbsnrtowcs_l(wchar_t * __restrict __to, const char ** __restrict __from,
24165899Srwatson    size_t __nms, size_t __len, mbstate_t * __restrict __st, locale_t __l)
25165899Srwatson{
26165899Srwatson	locale_t __old = uselocale(__l);
27165899Srwatson	size_t __rv = mbsnrtowcs(__to, __from, __nms, __len, __st);
28165899Srwatson	(void)uselocale(__old);
29165899Srwatson	return __rv;
30165899Srwatson}
31165899Srwatson
32165899Srwatsonstatic __inline size_t
33165899Srwatsonwcrtomb_l(char * __restrict __to, wchar_t __from,
34165899Srwatson    mbstate_t * __restrict __st, locale_t __l)
35165899Srwatson{
36165899Srwatson	locale_t __old = uselocale(__l);
37165899Srwatson	size_t __rv = wcrtomb(__to, __from, __st);
38165899Srwatson	(void)uselocale(__old);
39165899Srwatson	return __rv;
40165899Srwatson}
41165899Srwatson
4211819Sjulianstatic __inline size_t
4311819Sjulianmbrtowc_l(wchar_t * __restrict __to, const char * __restrict __from,
4411819Sjulian    size_t __len, mbstate_t * __restrict __st, locale_t __l)
4511819Sjulian{
4611819Sjulian	locale_t __old = uselocale(__l);
4711819Sjulian	size_t __rv = mbrtowc(__to, __from, __len, __st);
4811819Sjulian	(void)uselocale(__old);
4911819Sjulian	return __rv;
5011819Sjulian}
5111819Sjulian
5211819Sjulianstatic __inline size_t
5311819Sjulianmbsrtowcs_l(wchar_t * __restrict __to, const char ** __restrict __from,
5411819Sjulian    size_t __len, mbstate_t * __restrict __st, locale_t __l)
5511819Sjulian{
5611819Sjulian	locale_t __old = uselocale(__l);
5711819Sjulian	size_t __rv = mbsrtowcs(__to, __from, __len, __st);
5811819Sjulian	(void)uselocale(__old);
5911819Sjulian	return __rv;
6011819Sjulian}
6111819Sjulian
6212057Sjulianstatic __inline int
6311819Sjulianwctob_l(wint_t __wc, locale_t __l)
6411819Sjulian{
65116189Sobrien	locale_t __old = uselocale(__l);
66116189Sobrien	int __rv = wctob(__wc);
67116189Sobrien	(void)uselocale(__old);
6811819Sjulian	return __rv;
6976166Smarkm}
7029024Sbde#endif
7111819Sjulian