remove LFS64 programming interfaces (macro-only) from _GNU_SOURCE
[musl] / src / ctype / iswspace.c
index 68a1743..263afa1 100644 (file)
@@ -1,15 +1,24 @@
 #include <wchar.h>
 #include <wctype.h>
-#include <ctype.h>
+
+/* Our definition of whitespace is the Unicode White_Space property,
+ * minus non-breaking spaces (U+00A0, U+2007, and U+202F) and script-
+ * specific characters with non-blank glyphs (U+1680 and U+180E). */
 
 int iswspace(wint_t wc)
 {
        static const wchar_t spaces[] = {
                ' ', '\t', '\n', '\r', 11, 12,  0x0085,
                0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005,
-               0x2006, 0x2008, 0x2009, 0x200a, 0x200b,
-               0x2028, 0x2029, 0x2050, 0x3000, 0
+               0x2006, 0x2008, 0x2009, 0x200a,
+               0x2028, 0x2029, 0x205f, 0x3000, 0
        };
-       if (wcschr(spaces, wc)) return 1;
-       return 0;
+       return wc && wcschr(spaces, wc);
 }
+
+int __iswspace_l(wint_t c, locale_t l)
+{
+       return iswspace(c);
+}
+
+weak_alias(__iswspace_l, iswspace_l);