default features: make musl usable without feature test macros
[musl] / include / ctype.h
index 02f81fa..8f0d168 100644 (file)
@@ -1,6 +1,12 @@
 #ifndef        _CTYPE_H
 #define        _CTYPE_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
 int   isalnum(int);
 int   isalpha(int);
 int   isblank(int);
@@ -16,20 +22,18 @@ int   isxdigit(int);
 int   tolower(int);
 int   toupper(int);
 
-int   isascii(int);
-int   toascii(int);
+#define isalpha(a) ((((unsigned)(a)|32)-'a') < 26)
+#define isdigit(a) (((unsigned)(a)-'0') < 10)
+#define islower(a) (((unsigned)(a)-'a') < 26)
+#define isupper(a) (((unsigned)(a)-'A') < 26)
+#define isprint(a) (((unsigned)(a)-0x20) < 0x5f)
+#define isgraph(a) (((unsigned)(a)-0x21) < 0x5e)
 
-#define _tolower(a) ((a)|0x20)
-#define _toupper(a) ((a)&0x5f)
 
-#define isalpha(a) ((unsigned)(((a)|32)-'a') < 26)
-#define isdigit(a) ((unsigned)((a)-'0') < 10)
-#define islower(a) ((unsigned)((a)-'a') < 26)
-#define isupper(a) ((unsigned)((a)-'A') < 26)
-#define isprint(a) ((unsigned)((a)-0x20) < 0x5f)
-#define isgraph(a) ((unsigned)((a)-0x21) < 0x5e)
 
-#if 1
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
 
 #define __NEED_locale_t
 #include <bits/alltypes.h>
@@ -48,6 +52,16 @@ int   isupper_l(int, locale_t);
 int   isxdigit_l(int, locale_t);
 int   tolower_l(int, locale_t);
 int   toupper_l(int, locale_t);
+
+int   isascii(int);
+int   toascii(int);
+#define _tolower(a) ((a)|0x20)
+#define _toupper(a) ((a)&0x5f)
+
+#endif
+
+#ifdef __cplusplus
+}
 #endif
 
 #endif