--- wcswidth.c.bsdnew 2009-11-18 18:24:40.000000000 -0800 +++ wcswidth.c 2009-11-18 18:24:41.000000000 -0800 @@ -38,20 +38,30 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/lib/libc/string/wcswidth.c,v 1.7 2007/01/09 00:28:12 imp Exp $"); +#include "xlocale_private.h" + #include <wchar.h> int -wcswidth(const wchar_t *pwcs, size_t n) +wcswidth_l(const wchar_t *pwcs, size_t n, locale_t loc) { wchar_t wc; int len, l; + NORMALIZE_LOCALE(loc); len = 0; while (n-- > 0 && (wc = *pwcs++) != L'\0') { - if ((l = wcwidth(wc)) < 0) + if ((l = wcwidth_l(wc, loc)) < 0) return (-1); len += l; } return (len); } + +int +wcswidth(const wchar_t *pwcs, size_t n) +{ + return wcswidth_l(pwcs, n, __current_locale()); +} +