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/wcwidth.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/wcwidth.c')
-rw-r--r-- | newlib/libc/string/wcwidth.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/newlib/libc/string/wcwidth.c b/newlib/libc/string/wcwidth.c new file mode 100644 index 000000000..2cbd59e18 --- /dev/null +++ b/newlib/libc/string/wcwidth.c @@ -0,0 +1,53 @@ +/* +FUNCTION + <<wcwidth>>---number of column positions of a wide-character code + +INDEX + wcwidth + +ANSI_SYNOPSIS + #include <wchar.h> + int wcwidth(const wchar_t <[wc]>); + +TRAD_SYNOPSIS + #include <wchar.h> + int wcwidth(<[wc]>) + wchar_t *<[wc]>; + +DESCRIPTION + The <<wcwidth>> function shall determine the number of column + positions required for the wide character wc. The application + shall ensure that the value of wc is a character representable + as a wchar_t, and is a wide-character code corresponding to a + valid character in the current locale. + +RETURNS + The <<wcwidth>> function shall either return 0 (if wc is a null + wide-character code), or return the number of column positions to + be occupied by the wide-character code wc, or return -1 (if wc + does not correspond to a printable wide-character code). + + The current implementation of <<wcwidth>> simply sets the width + of all printable characters to 1 since newlib has no character + tables around. + +PORTABILITY +<<wcwidth>> has been introduced in the Single UNIX Specification Volume 2 +<<wcwidth>> has been marked as extension in Single UNIX Specification Volume 3 +*/ + +#include <_ansi.h> +#include <wchar.h> +#include <wctype.h> + +int +_DEFUN (wcwidth, (wc), + _CONST wchar_t wc) + +{ + if (iswprint (wc)) + return 1; + if (iswcntrl (wc) || wc == L'\0') + return 0; + return -1; +} |