]> git.saurik.com Git - apple/libc.git/blobdiff - locale/FreeBSD/wcwidth.c
Libc-1044.1.2.tar.gz
[apple/libc.git] / locale / FreeBSD / wcwidth.c
index 79f59dd05879cd5ce0428fb4d6f1fba04cb4c0df..ae533e7f4cdf76ef0bbe2d6d2166d2c1cd09b4de 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/locale/wcwidth.c,v 1.5 2002/08/19 20:32:27 ache Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/locale/wcwidth.c,v 1.8 2007/01/09 00:28:01 imp Exp $");
+
+#include "xlocale_private.h"
 
 #include <wchar.h>
-#include <wctype.h>
 
-#define _CTYPE_SWM 0xe0000000L /* Mask to get screen width data */
-#define _CTYPE_SWS 30          /* Bits to shift to get width */
+#undef wcwidth
 
 int
 wcwidth(wchar_t wc)
 {
-       int width;
 
-       if (wc == L'\0')
-               return (0);
+       return (__wcwidth_l(wc, __current_locale()));
+}
 
-       width = __maskrune(wc, _CTYPE_SWM);
+int
+wcwidth_l(wchar_t wc, locale_t loc)
+{
 
-       /* 0 is autowidth (default) */
-       return (width ? (int)((unsigned)width >> _CTYPE_SWS)
-                     : (iswprint(wc) ? 1 : -1));
+       NORMALIZE_LOCALE(loc);
+       return (__wcwidth_l(wc, loc));
 }
-