diff options
Diffstat (limited to 'newlib/libc/string/wcswidth.c')
-rw-r--r-- | newlib/libc/string/wcswidth.c | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/newlib/libc/string/wcswidth.c b/newlib/libc/string/wcswidth.c deleted file mode 100644 index 6c0efe63f..000000000 --- a/newlib/libc/string/wcswidth.c +++ /dev/null @@ -1,73 +0,0 @@ -/* -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 an extension in the Single UNIX Specification Volume 3. -*/ - -#include <_ansi.h> -#include <wchar.h> -#include "local.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 { - wint_t wi = *pwcs; - -#ifdef _MB_CAPABLE - wi = _jp2uc (wi); - /* First half of a surrogate pair? */ - if (sizeof (wchar_t) == 2 && wi >= 0xd800 && wi <= 0xdbff) - { - wint_t wi2; - - /* Extract second half and check for validity. */ - if (--n == 0 || (wi2 = _jp2uc (*++pwcs)) < 0xdc00 || wi2 > 0xdfff) - return -1; - /* Compute actual unicode value to use in call to __wcwidth. */ - wi = (((wi & 0x3ff) << 10) | (wi2 & 0x3ff)) + 0x10000; - } -#endif /* _MB_CAPABLE */ - if ((w = __wcwidth (wi)) < 0) - return -1; - len += w; - } while (*pwcs++ && --n > 0); - return len; -} |