summaryrefslogtreecommitdiffstats
path: root/newlib/libc/string/wcswidth.c
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2003-04-09 10:42:12 +0000
committerCorinna Vinschen <corinna@vinschen.de>2003-04-09 10:42:12 +0000
commit8f8d09c041ffce812946f8bd6b4b388676e4e56e (patch)
tree8a3b79c07ed8da2e51dc10b82ecc942e60ed5683 /newlib/libc/string/wcswidth.c
parent774d9e8282cb13bbca9f129ad8aa4fd42696227d (diff)
downloadcygnal-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.c56
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;
+}