.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/lib/libc/locale/wcwidth.3,v 1.3 2002/11/29 17:35:09 ru Exp $
+.\" $FreeBSD: src/lib/libc/locale/wcwidth.3,v 1.6 2004/08/17 04:56:03 trhodes Exp $
.\"
-.Dd October 3, 2002
+.Dd August 17, 2004
.Dt WCWIDTH 3
.Os
.Sh NAME
-.Nm wcwidth
+.Nm wcwidth ,
+.Nm wcwidth_l
.Nd "number of column positions of a wide-character code"
.Sh LIBRARY
.Lb libc
.Sh SYNOPSIS
.In wchar.h
.Ft int
-.Fn wcwidth "wchar_t wc"
+.Fo wcwidth
+.Fa "wchar_t wc"
+.Fc
+.In wchar.h
+.In xlocale.h
+.Ft int
+.Fo wcwidth_l
+.Fa "wchar_t wc"
+.Fa "locale_t loc"
+.Fc
.Sh DESCRIPTION
The
.Fn wcwidth
function determines the number of column positions required to
display the wide character
.Fa wc .
+.Pp
+Although the
+.Fn wcwidth
+function uses the current locale, the
+.Fn wcwidth_l
+function may be passed a locale directly. See
+.Xr xlocale 3
+for more information.
.Sh RETURN VALUES
The
.Fn wcwidth
argument is a null wide character (L'\e0'),
\-1 if
.Fa wc
-is not printable,
-otherwise it returns the number of column positions the
+is not printable;
+otherwise, it returns the number of column positions the
character occupies.
.Sh EXAMPLES
This code fragment reads text from standard input and
column = 0;
while ((ch = getwchar()) != WEOF) {
- if ((w = wcwidth(ch)) > 0)
- column += w;
- if (column >= 20) {
+ w = wcwidth(ch);
+ if (w > 0 && column + w >= 20) {
putwchar(L'\en');
column = 0;
}
putwchar(ch);
if (ch == L'\en')
column = 0;
+ else if (w > 0)
+ column += w;
}
.Ed
.Sh SEE ALSO
.Xr iswprint 3 ,
-.Xr wcswidth 3
+.Xr wcswidth 3 ,
+.Xr xlocale 3
.Sh STANDARDS
The
.Fn wcwidth