diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2003-04-09 10:42:12 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2003-04-09 10:42:12 +0000 |
commit | 8f8d09c041ffce812946f8bd6b4b388676e4e56e (patch) | |
tree | 8a3b79c07ed8da2e51dc10b82ecc942e60ed5683 /newlib/libc/string/wcswidth.c | |
parent | 774d9e8282cb13bbca9f129ad8aa4fd42696227d (diff) | |
download | cygnal-8f8d09c041ffce812946f8bd6b4b388676e4e56e.tar.gz cygnal-8f8d09c041ffce812946f8bd6b4b388676e4e56e.tar.bz2 cygnal-8f8d09c041ffce812946f8bd6b4b388676e4e56e.zip |
* 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.
Diffstat (limited to 'newlib/libc/string/wcswidth.c')
-rw-r--r-- | newlib/libc/string/wcswidth.c | 56 |
1 files changed, 56 insertions, 0 deletions
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 + <<wcswidth>>---number of column positions of a wide-character string + +INDEX + wcswidth + +ANSI_SYNOPSIS + #include <wchar.h> + int wcswidth(const wchar_t *<[pwcs]>, size_t <[n]>); + +TRAD_SYNOPSIS + #include <wchar.h> + int wcswidth(<[pwcs]>, <[n]>) + wchar_t *<[wc]>; + size_t <[n]>; + +DESCRIPTION + The <<wcswidth>> 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 <<wcswidth>> 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 +<<wcswidth>> has been introduced in the Single UNIX Specification Volume 2 +<<wcswidth>> has been marked as extension in Single UNIX Specification Volume 3 +*/ + +#include <_ansi.h> +#include <wchar.h> + +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; +} |