From 8f8d09c041ffce812946f8bd6b4b388676e4e56e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 9 Apr 2003 10:42:12 +0000 Subject: * libc/include/wchar.h: Add definitions for wcswidth and wcwidth. * libc/string/Makefile.am: Add wcswidth.c and wcwidth.c * libc/string/Makefile.in: Regenerated. * libc/string/wcswidth.c: New file. * libc/string/wcwidth.c: New file. * libc/string/wcstrings.tex: Add wcswidth and wcwidth. --- newlib/libc/string/wcswidth.c | 56 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 newlib/libc/string/wcswidth.c (limited to 'newlib/libc/string/wcswidth.c') diff --git a/newlib/libc/string/wcswidth.c b/newlib/libc/string/wcswidth.c new file mode 100644 index 000000000..bd3d9bbad --- /dev/null +++ b/newlib/libc/string/wcswidth.c @@ -0,0 +1,56 @@ +/* +FUNCTION + <>---number of column positions of a wide-character string + +INDEX + wcswidth + +ANSI_SYNOPSIS + #include + int wcswidth(const wchar_t *<[pwcs]>, size_t <[n]>); + +TRAD_SYNOPSIS + #include + int wcswidth(<[pwcs]>, <[n]>) + wchar_t *<[wc]>; + size_t <[n]>; + +DESCRIPTION + The <> function shall determine the number of column + positions required for n wide-character codes (or fewer than n + wide-character codes if a null wide-character code is encountered + before n wide-character codes are exhausted) in the string pointed + to by pwcs. + +RETURNS + The <> function either shall return 0 (if pwcs points to a + null wide-character code), or return the number of column positions + to be occupied by the wide-character string pointed to by pwcs, or + return -1 (if any of the first n wide-character codes in the + wide-character string pointed to by pwcs is not a printable + wide-character code). + +PORTABILITY +<> has been introduced in the Single UNIX Specification Volume 2 +<> has been marked as extension in Single UNIX Specification Volume 3 +*/ + +#include <_ansi.h> +#include + +int +_DEFUN (wcswidth, (pwcs, n), + _CONST wchar_t *pwcs _AND + size_t n) + +{ + int w, len = 0; + if (!pwcs || n == 0) + return 0; + do { + if ((w = wcwidth (*pwcs)) < 0) + return -1; + len += w; + } while (*pwcs++ && --n > 0); + return len; +} -- cgit v1.2.3