summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2015-10-13 20:43:49 +0000
committerbapt <bapt@FreeBSD.org>2015-10-13 20:43:49 +0000
commit979669d923dd13797ab49393a41f37ba706f6068 (patch)
tree60bcb837e37411501444484bb02600e974770e25 /include
parent9e21b4c1748fab15f52e0df9745d69b5848856f4 (diff)
downloadFreeBSD-src-979669d923dd13797ab49393a41f37ba706f6068.zip
FreeBSD-src-979669d923dd13797ab49393a41f37ba706f6068.tar.gz
Commit log from Dragonfly:
FreeBSD extended ctypes to include numbers (e.g. isnumber()) but never actually implemented it. The isnumber() function was equivalent to the isdigit() function in every case. Now that DragonFly's ctype source files have number definitions, the number ctype can finally be implemented. It's given a new flag _CTYPE_N. The isalnum() and iswalnum() functions have been changed to use this flag rather than the _CTYPE_D digit flag. While isalnum(), isnumber(), and their wide equivalents now return different values in locale cases, the ishexnumber() and iswhexnumber() functions are unchanged. They are still aliases for isxdigit() and iswxdigit(). Also change ctype.h for isdigit and isxdigit to use sbistype like the other functions. Obtained from: dragonfly
Diffstat (limited to 'include')
-rw-r--r--include/_ctype.h1
-rw-r--r--include/ctype.h8
-rw-r--r--include/wctype.h10
-rw-r--r--include/xlocale/_ctype.h4
4 files changed, 12 insertions, 11 deletions
diff --git a/include/_ctype.h b/include/_ctype.h
index 2bef587..8a43409 100644
--- a/include/_ctype.h
+++ b/include/_ctype.h
@@ -59,6 +59,7 @@
#define _CTYPE_I 0x00080000L /* Ideogram */
#define _CTYPE_T 0x00100000L /* Special */
#define _CTYPE_Q 0x00200000L /* Phonogram */
+#define _CTYPE_N 0x00400000L /* Number (superset of digit) */
#define _CTYPE_SW0 0x20000000L /* 0 width character */
#define _CTYPE_SW1 0x40000000L /* 1 width character */
#define _CTYPE_SW2 0x80000000L /* 2 width character */
diff --git a/include/ctype.h b/include/ctype.h
index 299b502..0ca422c 100644
--- a/include/ctype.h
+++ b/include/ctype.h
@@ -85,17 +85,17 @@ int isspecial(int);
__END_DECLS
#ifndef __cplusplus
-#define isalnum(c) __sbistype((c), _CTYPE_A|_CTYPE_D)
+#define isalnum(c) __sbistype((c), _CTYPE_A|_CTYPE_D|_CTYPE_N)
#define isalpha(c) __sbistype((c), _CTYPE_A)
#define iscntrl(c) __sbistype((c), _CTYPE_C)
-#define isdigit(c) __isctype((c), _CTYPE_D) /* ANSI -- locale independent */
+#define isdigit(c) __sbistype((c), _CTYPE_D)
#define isgraph(c) __sbistype((c), _CTYPE_G)
#define islower(c) __sbistype((c), _CTYPE_L)
#define isprint(c) __sbistype((c), _CTYPE_R)
#define ispunct(c) __sbistype((c), _CTYPE_P)
#define isspace(c) __sbistype((c), _CTYPE_S)
#define isupper(c) __sbistype((c), _CTYPE_U)
-#define isxdigit(c) __isctype((c), _CTYPE_X) /* ANSI -- locale independent */
+#define isxdigit(c) __sbistype((c), _CTYPE_X)
#define tolower(c) __sbtolower(c)
#define toupper(c) __sbtoupper(c)
#endif /* !__cplusplus */
@@ -126,7 +126,7 @@ __END_DECLS
#define digittoint(c) __sbmaskrune((c), 0xFF)
#define ishexnumber(c) __sbistype((c), _CTYPE_X)
#define isideogram(c) __sbistype((c), _CTYPE_I)
-#define isnumber(c) __sbistype((c), _CTYPE_D)
+#define isnumber(c) __sbistype((c), _CTYPE_D|_CTYPE_N)
#define isphonogram(c) __sbistype((c), _CTYPE_Q)
#define isrune(c) __sbistype((c), 0xFFFFFF00L)
#define isspecial(c) __sbistype((c), _CTYPE_T)
diff --git a/include/wctype.h b/include/wctype.h
index 2a2abd9..f176739 100644
--- a/include/wctype.h
+++ b/include/wctype.h
@@ -95,27 +95,27 @@ wint_t nextwctype(wint_t, wctype_t);
__END_DECLS
#ifndef __cplusplus
-#define iswalnum(wc) __istype((wc), _CTYPE_A|_CTYPE_D)
+#define iswalnum(wc) __istype((wc), _CTYPE_A|_CTYPE_D|_CTYPE_N)
#define iswalpha(wc) __istype((wc), _CTYPE_A)
#define iswblank(wc) __istype((wc), _CTYPE_B)
#define iswcntrl(wc) __istype((wc), _CTYPE_C)
#define iswctype(wc, charclass) __istype((wc), (charclass))
-#define iswdigit(wc) __isctype((wc), _CTYPE_D)
+#define iswdigit(wc) __istype((wc), _CTYPE_D)
#define iswgraph(wc) __istype((wc), _CTYPE_G)
#define iswlower(wc) __istype((wc), _CTYPE_L)
#define iswprint(wc) __istype((wc), _CTYPE_R)
#define iswpunct(wc) __istype((wc), _CTYPE_P)
#define iswspace(wc) __istype((wc), _CTYPE_S)
#define iswupper(wc) __istype((wc), _CTYPE_U)
-#define iswxdigit(wc) __isctype((wc), _CTYPE_X)
+#define iswxdigit(wc) __istype((wc), _CTYPE_X)
#define towlower(wc) __tolower(wc)
#define towupper(wc) __toupper(wc)
#if __BSD_VISIBLE
#define iswascii(wc) (((wc) & ~0x7F) == 0)
-#define iswhexnumber(wc) __istype((wc), _CTYPE_X)
+#define iswhexnumber(wc) __istype((wc), _CTYPE_X) /* alias of iswxdigit */
#define iswideogram(wc) __istype((wc), _CTYPE_I)
-#define iswnumber(wc) __istype((wc), _CTYPE_D)
+#define iswnumber(wc) __istype((wc), _CTYPE_D|_CTYPE_N)
#define iswphonogram(wc) __istype((wc), _CTYPE_Q)
#define iswrune(wc) __istype((wc), 0xFFFFFF00L)
#define iswspecial(wc) __istype((wc), _CTYPE_T)
diff --git a/include/xlocale/_ctype.h b/include/xlocale/_ctype.h
index b048c55..25a9c72 100644
--- a/include/xlocale/_ctype.h
+++ b/include/xlocale/_ctype.h
@@ -119,7 +119,7 @@ __sbistype_l(__ct_rune_t __c, unsigned long __f, locale_t __loc)
{ return __sbistype_l(__c, __cat, __l); }
#endif
-XLOCALE_ISCTYPE(alnum, _CTYPE_A|_CTYPE_D)
+XLOCALE_ISCTYPE(alnum, _CTYPE_A|_CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(alpha, _CTYPE_A)
XLOCALE_ISCTYPE(blank, _CTYPE_B)
XLOCALE_ISCTYPE(cntrl, _CTYPE_C)
@@ -128,7 +128,7 @@ XLOCALE_ISCTYPE(graph, _CTYPE_G)
XLOCALE_ISCTYPE(hexnumber, _CTYPE_X)
XLOCALE_ISCTYPE(ideogram, _CTYPE_I)
XLOCALE_ISCTYPE(lower, _CTYPE_L)
-XLOCALE_ISCTYPE(number, _CTYPE_D)
+XLOCALE_ISCTYPE(number, _CTYPE_D|_CTYPE_N)
XLOCALE_ISCTYPE(phonogram, _CTYPE_Q)
XLOCALE_ISCTYPE(print, _CTYPE_R)
XLOCALE_ISCTYPE(punct, _CTYPE_P)
OpenPOWER on IntegriCloud