From owner-svn-src-projects@freebsd.org Tue Oct 13 20:43:51 2015 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A73F1A12959 for ; Tue, 13 Oct 2015 20:43:51 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 605C51FC2; Tue, 13 Oct 2015 20:43:51 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t9DKhov0061620; Tue, 13 Oct 2015 20:43:50 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t9DKhnJ3061611; Tue, 13 Oct 2015 20:43:49 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201510132043.t9DKhnJ3061611@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Tue, 13 Oct 2015 20:43:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r289263 - in projects/collation: include include/xlocale lib/libc/locale usr.bin/localedef X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Oct 2015 20:43:51 -0000 Author: bapt Date: Tue Oct 13 20:43:49 2015 New Revision: 289263 URL: https://svnweb.freebsd.org/changeset/base/289263 Log: 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 Modified: projects/collation/include/_ctype.h projects/collation/include/ctype.h projects/collation/include/wctype.h projects/collation/include/xlocale/_ctype.h projects/collation/lib/libc/locale/isctype.c projects/collation/lib/libc/locale/iswctype.c projects/collation/lib/libc/locale/table.c projects/collation/lib/libc/locale/wctype.c projects/collation/usr.bin/localedef/ctype.c Modified: projects/collation/include/_ctype.h ============================================================================== --- projects/collation/include/_ctype.h Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/include/_ctype.h Tue Oct 13 20:43:49 2015 (r289263) @@ -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 */ Modified: projects/collation/include/ctype.h ============================================================================== --- projects/collation/include/ctype.h Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/include/ctype.h Tue Oct 13 20:43:49 2015 (r289263) @@ -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) Modified: projects/collation/include/wctype.h ============================================================================== --- projects/collation/include/wctype.h Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/include/wctype.h Tue Oct 13 20:43:49 2015 (r289263) @@ -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) Modified: projects/collation/include/xlocale/_ctype.h ============================================================================== --- projects/collation/include/xlocale/_ctype.h Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/include/xlocale/_ctype.h Tue Oct 13 20:43:49 2015 (r289263) @@ -119,7 +119,7 @@ __sbistype_l(__ct_rune_t __c, unsigned l { 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) Modified: projects/collation/lib/libc/locale/isctype.c ============================================================================== --- projects/collation/lib/libc/locale/isctype.c Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/lib/libc/locale/isctype.c Tue Oct 13 20:43:49 2015 (r289263) @@ -54,7 +54,7 @@ digittoint(int c) int isalnum(int c) { - return (__sbistype(c, _CTYPE_A|_CTYPE_D)); + return (__sbistype(c, _CTYPE_A|_CTYPE_N)); } #undef isalpha @@ -124,7 +124,7 @@ islower(int c) int isnumber(int c) { - return (__sbistype(c, _CTYPE_D)); + return (__sbistype(c, _CTYPE_N)); } #undef isphonogram Modified: projects/collation/lib/libc/locale/iswctype.c ============================================================================== --- projects/collation/lib/libc/locale/iswctype.c Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/lib/libc/locale/iswctype.c Tue Oct 13 20:43:49 2015 (r289263) @@ -44,7 +44,7 @@ __FBSDID("$FreeBSD$"); int iswalnum(wint_t wc) { - return (__istype(wc, _CTYPE_A|_CTYPE_D)); + return (__istype(wc, _CTYPE_A|_CTYPE_N)); } #undef iswalpha @@ -79,7 +79,7 @@ iswcntrl(wint_t wc) int iswdigit(wint_t wc) { - return (__isctype(wc, _CTYPE_D)); + return (__istype(wc, _CTYPE_D)); } #undef iswgraph @@ -114,7 +114,7 @@ iswlower(wint_t wc) int iswnumber(wint_t wc) { - return (__istype(wc, _CTYPE_D)); + return (__istype(wc, _CTYPE_N)); } #undef iswphonogram @@ -170,7 +170,7 @@ iswupper(wint_t wc) int iswxdigit(wint_t wc) { - return (__isctype(wc, _CTYPE_X)); + return (__istype(wc, _CTYPE_X)); } #undef towlower Modified: projects/collation/lib/libc/locale/table.c ============================================================================== --- projects/collation/lib/libc/locale/table.c Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/lib/libc/locale/table.c Tue Oct 13 20:43:49 2015 (r289263) @@ -101,16 +101,16 @@ const _RuneLocale _DefaultRuneLocale = { _CTYPE_P|_CTYPE_R|_CTYPE_G, _CTYPE_P|_CTYPE_R|_CTYPE_G, _CTYPE_P|_CTYPE_R|_CTYPE_G, - /*30*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|0, - _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|1, - _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|2, - _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|3, - _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|4, - _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|5, - _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|6, - _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|7, - /*38*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|8, - _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|9, + /*30*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|0, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|1, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|2, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|3, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|4, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|5, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|6, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|7, + /*38*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|8, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|9, _CTYPE_P|_CTYPE_R|_CTYPE_G, _CTYPE_P|_CTYPE_R|_CTYPE_G, _CTYPE_P|_CTYPE_R|_CTYPE_G, Modified: projects/collation/lib/libc/locale/wctype.c ============================================================================== --- projects/collation/lib/libc/locale/wctype.c Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/lib/libc/locale/wctype.c Tue Oct 13 20:43:49 2015 (r289263) @@ -73,9 +73,10 @@ wctype_l(const char *property, locale_t "ideogram\0" /* BSD extension */ "special\0" /* BSD extension */ "phonogram\0" /* BSD extension */ + "number\0" /* BSD extension */ "rune\0"; /* BSD extension */ static const wctype_t propmasks[] = { - _CTYPE_A|_CTYPE_D, + _CTYPE_A|_CTYPE_N, _CTYPE_A, _CTYPE_B, _CTYPE_C, @@ -90,6 +91,7 @@ wctype_l(const char *property, locale_t _CTYPE_I, _CTYPE_T, _CTYPE_Q, + _CTYPE_N, 0xFFFFFF00L }; size_t len1, len2; Modified: projects/collation/usr.bin/localedef/ctype.c ============================================================================== --- projects/collation/usr.bin/localedef/ctype.c Tue Oct 13 20:25:03 2015 (r289262) +++ projects/collation/usr.bin/localedef/ctype.c Tue Oct 13 20:43:49 2015 (r289263) @@ -51,6 +51,11 @@ __FBSDID("$FreeBSD$"); #include "runefile.h" +/* Needed for bootstrapping, _CTYPE_N */ +#ifndef _CTYPE_N +#define _CTYPE_N 0x00400000L +#endif + #define _ISUPPER _CTYPE_U #define _ISLOWER _CTYPE_L #define _ISDIGIT _CTYPE_D @@ -65,7 +70,7 @@ __FBSDID("$FreeBSD$"); #define _E1 _CTYPE_Q #define _E2 _CTYPE_I #define _E3 0 -#define _E4 0 +#define _E4 _CTYPE_N #define _E5 _CTYPE_T static wchar_t last_ctype;